CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Probléme requéte SQL

monaco_08
monaco_08
Niveau 4
19 janvier 2013 à 22:05:11

Bonjour à tous je travaille actuellement sur un projet que j'ai à rendre en mars pour ma licence. Seulement je retrouve coincé pour une requête SQL, la voici :

SELECT DISTINCT et.nom
FROM etudiant as et, enseignant as en, groupe_projet as gp
WHERE et.id_etudiant = gp.fk_etudiant
AND en.id_enseignant = gp.fk_enseignant
AND gp.fk_groupe = 1;

La requête ne me retourne rien alors que mes tables sont remplis, et mes jointures sont correcte. Si quelqu'un a une idée.

pierreonxbox
pierreonxbox
Niveau 10
19 janvier 2013 à 22:13:15

heu quel est ton model de données, comme ça je ne peux pas t'aider.

monaco_08
monaco_08
Niveau 4
19 janvier 2013 à 22:16:15

ETUDIANT(id_etudiant,nom,prenom,formation,etabliss
ement)

ENSEIGNANT(id_enseignant,nom,prenom)
GROUPE(id,nom)
GROUPE_PROJET(id_groupe,#fk_groupe,#fk_etudiant(NU
LL),#fk_enseignant(NULL))

Voila :)

pierreonxbox
pierreonxbox
Niveau 10
19 janvier 2013 à 22:22:50

Ton model est "étrange" ou alors j'ai pas l'habitude de ces nomenclatures. Pourquoi la notion d'id groupe est elle en double (id_groupe et fk_groupe sur la table GROUPE_PROJET).

Dans ta requête tu fais une liaison sur la table Enseignant sans utiliser ou exeploiter celle-ci, pourquoi ?

pierreonxbox
pierreonxbox
Niveau 10
19 janvier 2013 à 22:23:17

Si tu as un dump de la base je suis preneur.

monaco_08
monaco_08
Niveau 4
19 janvier 2013 à 22:28:02

Pour la requête j'avais oublié de mettre dans le SELECT le champs "en.nom". Donc je la réutilise bien :)

Sinon pour ma nomemclatures. Je souhaite pouvoir avoir des doublons je m'explique :

-avoir un etudiant dans plusieurs groupes
-avoir un enseignant dans plusieurs groupes

Mais si tu as une manière plus conventionnelle je suis preneur ^^

monaco_08
monaco_08
Niveau 4
19 janvier 2013 à 22:30:56

-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Sam 19 Janvier 2013 à 21:29
-- Version du serveur: 5.5.24-log
-- Version de PHP: 5.4.3

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS

*/;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `projet_tuteure`
--

-- --------------------------------------------------
------

--
-- Structure de la table `documents`
--

CREATE TABLE IF NOT EXISTS `documents` (
`id_documents` int(11) NOT NULL AUTO_INCREMENT,
`nom_doc` varchar(45) DEFAULT NULL,
`url_doc` varchar(45) NOT NULL,
PRIMARY KEY (`id_documents`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=71 ;

-- --------------------------------------------------
------

--
-- Structure de la table `document_produit`
--

CREATE TABLE IF NOT EXISTS `document_produit` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fk_documents` int(11) NOT NULL,
`fk_produit` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_documents_2` (`fk_documents`),
KEY `IDX_DOCUMENT_PRODUIT_FK_PRODUIT` (`fk_produit`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ;

-- --------------------------------------------------
------

--
-- Structure de la table `enseignant`
--

CREATE TABLE IF NOT EXISTS `enseignant` (
`id_enseignant` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) NOT NULL,
`prenom` varchar(45) NOT NULL,
`etablissement` varchar(45) NOT NULL,
PRIMARY KEY (`id_enseignant`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Contenu de la table `enseignant`
--

INSERT INTO `enseignant` (`id_enseignant`, `nom`, `prenom`, `etablissement`) VALUES
(2, 'Linck', 'Sebastien', 'IFTS');

-- --------------------------------------------------
------

--
-- Structure de la table `etudiant`
--

CREATE TABLE IF NOT EXISTS `etudiant` (
`id_etudiant` int(11) NOT NULL AUTO_INCREMENT,
`nom` varchar(45) NOT NULL,
`prenom` varchar(45) NOT NULL,
`formation` varchar(45) NOT NULL,
`etablissement` varchar(45) NOT NULL,
PRIMARY KEY (`id_etudiant`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Contenu de la table `etudiant`
--

INSERT INTO `etudiant` (`id_etudiant`, `nom`, `prenom`, `formation`, `etablissement`) VALUES
(1, 'Cellier', 'Antoine', 'Licence Pro CNDAI', 'IFTS'),
(2, 'Cellier', 'Antoine', 'Licence Pro CNDAI', 'IFTS'),
(5, 'Simon', 'Romain', 'Licence Pro CNDAI', 'IFTS');

-- --------------------------------------------------
------

--
-- Structure de la table `groupe`
--

CREATE TABLE IF NOT EXISTS `groupe` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nom_groupe` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Contenu de la table `groupe`
--

INSERT INTO `groupe` (`id`, `nom_groupe`) VALUES
(1, 'SmartTeam');

-- --------------------------------------------------
------

--
-- Structure de la table `groupe_projet`
--

CREATE TABLE IF NOT EXISTS `groupe_projet` (
`id_groupe` int(11) NOT NULL AUTO_INCREMENT,
`fk_groupe` int(11) NOT NULL,
`fk_enseignant` int(11) DEFAULT NULL,
`fk_etudiant` int(11) DEFAULT NULL,
PRIMARY KEY (`id_groupe`),
KEY `fk_enseignant` (`fk_enseignant`),
KEY `fk_etudiant` (`fk_etudiant`),
KEY `IDX_GROUPE_PROJET` (`fk_groupe`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

--
-- Contenu de la table `groupe_projet`
--

INSERT INTO `groupe_projet` (`id_groupe`, `fk_groupe`, `fk_enseignant`, `fk_etudiant`) VALUES
(5, 1, NULL, 1),
(6, 1, NULL, 2);

-- --------------------------------------------------
------

--
-- Structure de la table `informations`
--

CREATE TABLE IF NOT EXISTS `informations` (
`id_informations` int(11) NOT NULL AUTO_INCREMENT,
`nom_information` varchar(45) NOT NULL,
`contenu_texte` varchar(45) DEFAULT NULL,
`url_contenu` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id_informations`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------
------

--
-- Structure de la table `produit`
--

CREATE TABLE IF NOT EXISTS `produit` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`libelle` varchar(45) NOT NULL,
`url_illustration` varchar(45) DEFAULT NULL,
`annee` year(4) NOT NULL,
`description` longtext NOT NULL,
`fk_groupe_projet` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_groupe_projet` (`fk_groupe_projet`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Contenu de la table `produit`
--

INSERT INTO `produit` (`id`, `libelle`, `url_illustration`, `annee`, `description`, `fk_groupe_projet`) VALUES
(1, 'Baby Phone', 'bigo.jpg', 2000, 'tettretreter reegrtre', 1);

--
-- Contraintes pour les tables exportées
--

--
-- Contraintes pour la table `document_produit`
--
ALTER TABLE `document_produit`
ADD CONSTRAINT `document_produit_ibfk_2` FOREIGN KEY (`fk_produit`) REFERENCES `produit` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `document_produit_ibfk_1` FOREIGN KEY (`fk_documents`) REFERENCES `documents` (`id_documents`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Contraintes pour la table `groupe_projet`
--
ALTER TABLE `groupe_projet`
ADD CONSTRAINT `groupe_projet_ibfk_3` FOREIGN KEY (`fk_groupe`) REFERENCES `groupe` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `groupe_projet_ibfk_1` FOREIGN KEY (`fk_enseignant`) REFERENCES `enseignant` (`id_enseignant`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `groupe_projet_ibfk_2` FOREIGN KEY (`fk_etudiant`) REFERENCES `etudiant` (`id_etudiant`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- Contraintes pour la table `produit`
--
ALTER TABLE `produit`
ADD CONSTRAINT `produit_ibfk_2` FOREIGN KEY (`fk_groupe_projet`) REFERENCES `groupe` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

pierreonxbox
pierreonxbox
Niveau 10
19 janvier 2013 à 22:37:58

ton model est pas optimal, tu vas avoir pas mal de doublons, ou de place utilisée inutilement, le mieux est d'avoir :

Une table Etudiant
Une table Enseignant
Une table Groupe
Une table LINK_GROUPE_ETUDIANT (idGroupe,IdEtudiant)
Une table LINK_GROUPE_ENSEIGNANT (idGroupe,IdEnseignant)

Concernant ta requête, la table contient un groupe composé de 2 étudiant sans enseignant, du coup ta requête renvoi null ce qui est normal

SELECT DISTINCT et.nom
FROM etudiant as et, enseignant as en, groupe_projet as gp
WHERE et.id_etudiant = gp.fk_etudiant // CA C EST OK, GP CONTIENT DES ETUDIANT
AND en.id_enseignant = gp.fk_enseignant // CA C EST KP GP NE CONTIENT PAS D ENSEIGNANT
AND gp.fk_groupe = 1; // CA C EST OK TON GROUPE 1 EST PRESENT

en espérant que ça t'aide

monaco_08
monaco_08
Niveau 4
19 janvier 2013 à 22:42:28

Je vais reprendre ton model qui est en effet bien mieux :) Merci beaucoup :)

pierreonxbox
pierreonxbox
Niveau 10
19 janvier 2013 à 23:13:34

De rien :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment