SQL : double condition sur une seule colonne
Résolu/Fermé
bazart
-
3 févr. 2009 à 11:29
oscarapace Messages postés 56 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 19 juin 2009 - 4 févr. 2009 à 14:26
oscarapace Messages postés 56 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 19 juin 2009 - 4 févr. 2009 à 14:26
A voir également:
- Sql double condition
- Double ecran - Guide
- Whatsapp double sim - Guide
- Excel cellule couleur si condition texte - Guide
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
7 réponses
nicdev
Messages postés
233
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 décembre 2010
87
3 févr. 2009 à 11:37
3 févr. 2009 à 11:37
Tu cherches toutes les lignes avec les 2 infos en meme temps sur la meme ligne ou celles avec l'un ou l'autre ou les 2?
2 infos en meme temps sur la meme ligne
SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%noir%" And caracteristique like "%HD ready%"
l'un ou l'autre ou les 2
SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%noir%" OR caracteristique like "%HD ready%"
2 infos en meme temps sur la meme ligne
SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%noir%" And caracteristique like "%HD ready%"
l'un ou l'autre ou les 2
SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%noir%" OR caracteristique like "%HD ready%"
Ah et j'ai du oublier de preciser que "noir" et "HD ready" se situent sur deux ligne différentes. pour la premiere ligne ce serait :
125 | 4567 | couleur | noir | NULL
et
982 | 4567 | definition | HD ready | NULL
Désolé si je n'etait pas assez clair ^^ .
125 | 4567 | couleur | noir | NULL
et
982 | 4567 | definition | HD ready | NULL
Désolé si je n'etait pas assez clair ^^ .
nicdev
Messages postés
233
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 décembre 2010
87
3 févr. 2009 à 11:51
3 févr. 2009 à 11:51
Oui C'est une info importante le fait que cela soit sur 2 lignes différentes.
SELECT num_materiel FROM `caracteristiques` as carac
WHERE caracteristique like "%noir%" And exists (SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%HD ready%" AND carac.num_materiel = caracteristiques.num_materiel)
SELECT num_materiel FROM `caracteristiques` as carac
WHERE caracteristique like "%noir%" And exists (SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%HD ready%" AND carac.num_materiel = caracteristiques.num_materiel)
oscarapace
Messages postés
56
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
19 juin 2009
14
3 févr. 2009 à 11:39
3 févr. 2009 à 11:39
si je comprends bien le champ doit contenir le mot "noir" et le mot "HD ready", donc la requete deviendrai
SELECT ... WHERE caracteristique LIKE '% noir % HD ready %' OR caracteristique LIKE '% HD ready % noir %'
SELECT ... WHERE caracteristique LIKE '% noir % HD ready %' OR caracteristique LIKE '% HD ready % noir %'
En fait je veut que les deux conditions soient respectées a la fois, c'est a dire que le materiel soit noir et HD ready.
C'est a dire comme pour ta premiere requete or quand je l'execute j'ai le droit a un beau "MySQL n'a retourné aucun enregistrement." des familles ^^.
C'est a dire comme pour ta premiere requete or quand je l'execute j'ai le droit a un beau "MySQL n'a retourné aucun enregistrement." des familles ^^.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci ca marche !
Et si jamais je veut rajouter une 3eme condition etc.. j'usqu'a 5 ? parcequ'en fait le but est de crée un moteur de recherche multicritère...
J'implémente une deuxieme sous requête genre :
SELECT num_materiel FROM `caracteristiques` as carac
WHERE caracteristique like "%noir%" And exists (SELECT num_materiel FROM `caracteristiques` as caract2
WHERE caracteristique like "%HD ready%" AND carac.num_materiel = caracteristiques.num_materie And exists (SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%HDMI%" AND caract2.num_materiel = caracteristiques.num_materiel))
Et si jamais je veut rajouter une 3eme condition etc.. j'usqu'a 5 ? parcequ'en fait le but est de crée un moteur de recherche multicritère...
J'implémente une deuxieme sous requête genre :
SELECT num_materiel FROM `caracteristiques` as carac
WHERE caracteristique like "%noir%" And exists (SELECT num_materiel FROM `caracteristiques` as caract2
WHERE caracteristique like "%HD ready%" AND carac.num_materiel = caracteristiques.num_materie And exists (SELECT num_materiel FROM `caracteristiques`
WHERE caracteristique like "%HDMI%" AND caract2.num_materiel = caracteristiques.num_materiel))
nicdev
Messages postés
233
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
13 décembre 2010
87
3 févr. 2009 à 12:04
3 févr. 2009 à 12:04
A tester mais je pense que cela est jouable.
oscarapace
Messages postés
56
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
19 juin 2009
14
4 févr. 2009 à 14:26
4 févr. 2009 à 14:26
par contre si tu as beacoup de requetes avec des LIKE, et si ta base de données est importante ainsi que le nombre d'utilisateurs, ça va ramer grave. dans ce cas pour un moteur de recherche il faut se renseigner sur le "fulltext search". mais là ça dépendra de ton type de base de données (mysql ou autre)