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
Bonjour,

J'ai un petit soucis tout bête (j'en suis sûr), j'aimerais mettre deux condition sur une seule colonne, par exemple :

SELECT num_materiel  FROM `caracteristiques` 
WHERE  caracteristique like "noir" And caracteristique like "HD ready"


Sachant que la table caracteristiques a quatre colonne :

code : clé primaire de la table

num_materiel : identifiant du materiel qui est lié a la table materiel.

type_caract : La "famille" de la caracteristique ex : "couleur", "Haute-définition" ...

caracteristique : la caracteristique du materiel en question.

Commentaire : si jamais il y a un commentaire.


Tout ceci en sachant que je ne peut pas faire une nouvelle table, j'ai plus de 17 000 enregistrement dans celle ci.

voila si il y a d'autre renseignement a donner ne pas hésiter !

Merci par avance.
A voir également:

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
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
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 ^^ .
1
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
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)
0
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
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 %'
0
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 ^^.
0

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))
0
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
A tester mais je pense que cela est jouable.
0
ok, merci .
0
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
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)
0