Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/01/2011, 18h31   #1
Membre habitué
 
Inscription : juin 2003
Messages : 223
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2003
Messages : 223
Points : 108
Points : 108
Par défaut Chercher si un produit a labelA et labelB

Bonjour,

j'ai un table produit avec son ID et son nom.
j'ai un table label avec un ID et un nom

et j'ai une table de reference prodlabel qui contient un PRD_ID et LBL_ID comme foreign key.

J'essaye de faire une requête MySQL pour pouvoir chercher les produits qui ont labelA et label2 mais je n'y arrive pas

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
SELECT product.name FROM product 
WHERE product.PRD_ID IN 
(
ELECT _prodlabel.PRD_ID
FROM _prodlabel
WHERE _prodlabel.LBL_ID
IN (
SELECT label.LBL_ID
FROM label
WHERE name LIKE  '%labelB%'
)
INTERSECT //Ca ne marche pas avec MySQL
 
SELECT _prodlabel.PRD_ID
FROM _prodlabel
WHERE _prodlabel.LBL_ID
IN (
 
SELECT label.LBL_ID
FROM label
WHERE name LIKE  '%labelA%'
)
Si qqun peux m'aider ca serait vraiment cool
elraton est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/01/2011, 22h02   #2
Membre Expert
 
Avatar de Nudger
 
Homme Thomas Arnaud
Directeur de projet
Inscription : octobre 2010
Messages : 452
Détails du profil
Informations personnelles :
Nom : Homme Thomas Arnaud
Âge : 36
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur de projet
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : octobre 2010
Messages : 452
Points : 1 012
Points : 1 012
Envoyer un message via Skype™ à Nudger
Bonsoir,

Ca devrait faire l'affaire :
Code :
1
2
3
4
5
6
7
SELECT product.name, COUNT(*)
FROM product, _prodlabel, label
WHERE product.PRD_ID = _prodlabel.PRD_ID
AND _prodlabel.LBL_ID = label.LBL_ID
AND label.name IN ('labelA','labelB')
GROUP BY product.name
HAVING COUNT(*) > 1
__________________
www.nudge.org Surveillez et optimisez vos applications Java
Nudger est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2011, 08h45   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 986
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 986
Points : 18 234
Points : 18 234
Envoyer un message via MSN à CinePhil
Et avec la syntaxe normalisée depuis 1992 pour les jointures, c'est encore mieux !
Code :
1
2
3
4
5
6
7
SELECT product.name
FROM product
INNER JOIN _prodlabel ON product.PRD_ID = _prodlabel.PRD_ID
    INNER JOIN label ON  _prodlabel.LBL_ID = label.LBL_ID
WHERE label.name IN ('labelA','labelB')
GROUP BY product.name
HAVING COUNT(*) > 1
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h20.


 
 
 
 
Partenaires

Hébergement Web