Requete Simple avec un AND

LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010 - 9 juil. 2010 à 11:46
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010 - 13 juil. 2010 à 16:56
Bonjour,
avant de devenir fou, je préfère venir poser ma question ici :

Structure de ma table
photo_id tags_id
6 	    2
6 	    6
9 	    1
9 	    3
9 	    4
9 	    5


Mon but est simple je voudrais sortir les photo_id dont le tags_id est = à 3 et 4 ....

Hors
select photo_id from photo_tags_table where tags_id =3 AND tags_id = 4

retourne aucun résultat (alors que j'aimerai voir comme résultat 9), le OR fonctionne mais ce n'est pas ce que je souhaite ... une idée ?

Merci

10 réponses

julsac Messages postés 6 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 13 juillet 2010
9 juil. 2010 à 11:53
Bonjour,

Essai cette requête je pense que c'est ce qu'il te faut

select photo_id from photo_tags where tags_id in ('3','4');

Si ça ne marche pas enlève les guillemets

Bon courage.
0
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010
9 juil. 2010 à 12:13
Ça a l'air de fonctionner !!! Un grand merci!!!!
0
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010
9 juil. 2010 à 12:24
Mince si je fais

SELECT * FROM `photo_tags_table` where tags_id in ('3','4','6')

Il me retourne 9 et 6 hors dans ce cas la ça devrait rien retourner, le in équivaut a une sorte de OR. Moi j'ai besoin d'un AND, un autre idée ?
0
julsac Messages postés 6 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 13 juillet 2010
9 juil. 2010 à 13:24
Pourrait tu afficher le résultat que tu souhaiterais avoir s'il te plait?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010
9 juil. 2010 à 14:36
Alors mon but : par exemple c'est d'afficher les photo_id avec tags_id = 3 ET (pas ou) 4, mais que si je souhaite afficher les photo_id ou les tags_id sont 2 ET 4 ET 6, dans ce cas la par rapport à mon jeux d'enregistrement cela ne devrait retourner aucun resultat...

Jeux :
photo_id tags_id
6 	    2
6 	    6
9 	    1
9 	    3
9 	    4
9 	    5



Exemple 1 :
SELECT * FROM `photo_tags_table` where tags_id in ('3','4','6')
Ne doit rien retourner

Exemple 2 :
SELECT * FROM `photo_tags_table` where tags_id in ('3','4')
Doit rien retourner photo_id = 9

Exemple 3 :
SELECT * FROM `photo_tags_table` where tags_id in ('2','6')
Doit rien retourner photo_id = 6

Exemple 4 :
SELECT * FROM `photo_tags_table` where tags_id in ('6','1')
Ne doit rien retourner


en espérant être clair
0
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010
9 juil. 2010 à 15:27
pour information j'ai utiliser le subterfuge suivant

SELECT photo_id, count( tags_id ) AS mycount
FROM `photo_tags_table`
WHERE tags_id =3
OR tags_id =4
GROUP BY photo_id
HAVING mycount =2

le having prend obligatoirement le nombre de "tags_id" passé en argument du coup le resultat contient forcement le photo_id qui remplis toutes les clauses ... mais c'est tiré par les cheveux, si quelqu'un a mieux
0
julsac Messages postés 6 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 13 juillet 2010
13 juil. 2010 à 08:49
Par rapport aux 4 exemples, ce que j'ai compris c'est que tu veux afficher un résultat seulement quand les tags_id ont le même photo_id c'est ça?
0
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010
13 juil. 2010 à 09:02
En effet je souhaite afficher les photo id qui remplissent TOUTES les conditions des tags id
0
julsac Messages postés 6 Date d'inscription mardi 17 février 2009 Statut Membre Dernière intervention 13 juillet 2010
13 juil. 2010 à 13:31
Essai ça je pense que c'est ce que tu veux du coup :

select p1.photo_id, p1.tags_id,p2.tags_id
from photo_tags_table p1, photo_tags_table p2
where p1.tags_id = 3
and p2.tags_id = 4
and p2.photo_id = p1.photo_id

Normalement ca ne devrait t'afficher un résultat que si ça correspond à ces 3 critères. Je sais pas si c'est ce que tu souhaite.
0
LorysC Messages postés 9 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 13 juillet 2010
13 juil. 2010 à 16:56
Ca fonctionne en effet, je vais m'inspirer de ca pour en faire une requete dynamique, puis que le nombre de tags_id peut varié (case a cocher dans une formulaire)

merci
0
Rejoignez-nous