Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 11/03/2011, 11h50   #1
Invité de passage
 
Inscription : janvier 2005
Messages : 2
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2
Points : 0
Points : 0
Par défaut Where sur plusieurs colonnes

Bonjour a tous,
j'aimerais faire un where sur plusieurs colonnes mais j'ai toujours le meme message d'erreur : "Operand should contain 2 column(s) "
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT ep. *
FROM emplacement_produit ep, product_ean2 p
WHERE ep.idproduit = p.idproduit
AND p.ean = '3221610044100'
AND qte >0
AND (
`rangee` , `etage`
) NOT
IN (
2, 3
)

Quelqu'un pourrait il m'aider
Merci d'avance
vico17 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 14h51   #2
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Bonjour.

Tu fais une jointure entre 2 tables, donc ta requête devrait avoir cette forme :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SELECT ep. *
FROM emplacement_produit ep  
 
INNER JOIN product_ean2 p
ON ep.idproduit = p.idproduit
 
WHERE p.ean = '3221610044100'
AND qte >0
AND (
`rangee` , `etage`
) NOT
IN (
2, 3
)
comme ça, ça permet de bien différencier la jointure du filtre where.

Après, qu'est ce que tu veux faire avec ton :

Code :
1
2
3
4
5
6
7
 
AND (
`rangee` , `etage`
) NOT
IN (
2, 3
)
??

Ne pourrais-tu pas faire :

Code :
1
2
3
4
5
 
AND 
`rangee` != 2
AND
`etage`!= 3
Non? Ou alors je passe à côté d'un truc??
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 14h59   #3
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
La bonne syntaxe serait plutôt celle-ci :
Code :
1
2
3
4
5
6
7
SELECT ep.les_colonnes_necessaires_et_pas_etoile
FROM emplacement_produit ep  
INNER JOIN product_ean2 p
    ON ep.idproduit = p.idproduit
WHERE p.ean = '3221610044100'
    AND qte >0
    AND (rangee, etage) <> (2, 3)
Mais pas sûr que MySQL l'accepte.

Et je pense comme GyZmoO que ça doit être équivalent à cette requête :
Code :
1
2
3
4
5
6
7
8
SELECT ep.les_colonnes_necessaires_et_pas_etoile
FROM emplacement_produit ep  
INNER JOIN product_ean2 p
    ON ep.idproduit = p.idproduit
WHERE p.ean = '3221610044100'
    AND qte >0
    AND rangee <> 2
    AND etage <> 3
Au passage :
Évite la guerre des étoiles !

GyZmoO, le symbole normalisé pour "différent de" en SQL est <> et non pas != comme en PHP, même si je crois que MySQL accepte les deux.
__________________
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 00
Vieux 11/03/2011, 15h10   #4
Membre confirmé
 
Avatar de GyZmoO
 
Homme Mickaël
Ingénieur développement logiciels
Inscription : février 2006
Messages : 402
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 27
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : février 2006
Messages : 402
Points : 238
Points : 238
Envoyer un message via MSN à GyZmoO
Citation:
GyZmoO, le symbole normalisé pour "différent de" en SQL est <> et non pas != comme en PHP, même si je crois que MySQL accepte les deux.
Ouille, on va dire que c'est Vendredi...
__________________
define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.
GyZmoO est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h16   #5
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Je crois qu'il faut des parenthèses suplémentaires pour bien délimiter le couple (2,3), donc plutôt :
Code :
AND (rangee, etage) <> ((2, 3))
Sinon ce serait plutôt équivalent à :
Code :
AND NOT (rangee = 2 AND etage = 3)
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h44   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 998
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 998
Points : 18 262
Points : 18 262
Envoyer un message via MSN à CinePhil
À vico17 de nous expliquer son besoin pour qu'on puisse l'orienter vers la bonne solution.

Qu'est censée faire cette requête ?
__________________
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 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web