Requete multicondition multi table

Signaler
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011
-
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
-
Hello, Bonjour bonjour

Ma question est dans le sujet, faire une requete multiconditions, multitables.

Table jouet:
id autoincrement 11
voiture varache 100
couleur varache 100
porte varache 100

Table option:
id autoincrement 11
radio varache 100
clim varache 100
4roue varache 100

voici la requete que j'aimerais réaliser mais je plante:

select voiture, couleur, porte dans jouet where voiture='fiat' AND couleur='rose' AND porte !='1' ET select radio, cli, 4roue dans option where radio='oui' AND clim='oui' AND 4roue='non'

d'ou le resultat de la requete

fiat rose 1 oui oui non

14 réponses

Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

oui enfin, le resultat de la requete ne sera pas tout a fait cela mais vous aurez je penses compris le principe
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Alors là, la notion à connaitre c'est Jointure SQL et là tu comprendras tout.
S.
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

je connaissait pas cette fonction, elle est interessante mais je crois que c un peu plus complexe pour moi:

voici un debut de requete et la suite bug

"SELECT voiture, couleur, porte FROM jouet WHERE voiture !='' AND couleur != '' AND porte '2' AND SELECT radio FROM option WHERE voiture = voiture";


Table jouet:
id auto-increment 11
voiture varache 100
couleur varache 100
porte varache 100

Table option:
id auto-increment 11
voiture varache 100
radio varache 100
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Non, pas plus complexe. Si on prend en considération que voiture est la clé commune qui te permet de faire un lien (c'est bien ça ??) et si tu regardes sur l'instruction JOIN sur MySQL tu vas comprendre.
S.
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

oui mais j'avoue que j'ai un peu de mal
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

je pige rien
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

j'arrive pas, quelqu'un de gentil voudrait bien m'aider ?
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Que contiennent tes tables ? Il va falloir faire une jointure mais je ne comprends pas ta conception au niveau de ta base.
S.
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

merci, et bien voila, j'ai deux table, la table 1 que j'ai appelé JOUET et la table 2 que j'ai appelé OPTION

Table1 JOUET:
id auto-increment 11
voiture varache 100
couleur varache 100
porte varache 100

Table2 OPTION:
id auto-increment 11
voiture varache 100
radio varache 100


"SELECT voiture, couleur, porte FROM jouet WHERE voiture !='' AND couleur != '' AND porte '2' AND SELECT radio FROM option WHERE voiture = voiture";
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Et c'est quoi la différence avec ce que tu as écrit au dessus ?
Le copier coller ne t'empeche pas de corriger les fautes. C'est VARCHAR et non VARACHE.
S.
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

Et bien je veux que la requete me trouve par exemple la fiat (dans voiture) qui a une couleur bleu (dans couleur) qui a deux porte (dans nombre de portes) et qui a une radio (dans radio de l'autre table)
Messages postés
278
Date d'inscription
dimanche 13 décembre 2009
Statut
Membre
Dernière intervention
24 juin 2011

je m'explique bien ou pas ?
Messages postés
1309
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
5 juin 2013
12
Salut,

Un ne fait pas de "AND SELECT", ça n'existe pas, ça ne se fait pas, ce n'est pas correct, il y a des UNION pour ça. Après l'union n'est pas ce que tu cherches, comme l'a très justement dit syndrael il te faut faire une jointure.

SELECT jouet.voiture, jouet.couleur, jouet.porte, option.radio FROM jouet INNER JOIN option ON jouet.voiture =  option.voiture WHERE jouet.voiture !='' AND jouet.couleur != '' AND jouet.porte '2'

Explication :

Pour éviter une ambiguïté sur certains champs (et rendre la requête plus lisible) on précise la table à laquelle appartient le champ grâce au point (nom_de_la_table.nom_du_champ).

"SELECT jouet.voiture, jouet.couleur, jouet.porte, option.radio"
=> On indique tous les champs que l'on souhaite sélectionner dans les deux tables.

"FROM jouet INNER JOIN option"
= > On indique les deux tables dans lesquelles on sélectionne et le type de jointure, ici une jointure interne.

"ON jouet.voiture option.voiture"
> On indique ici la condition de la jointure. Si cette condition est omise, on sélectionnerait le produit cartésien des deux table, ce qui mettrait le serveur sur els rotules en cas de tables bien remplies.

"WHERE jouet.voiture !='' AND jouet.couleur != '' AND jouet.porte '2'"
=> On indique les conditions de sélection.

Et bien finalement c'est pas bien dur une jointure interne non ?
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
je m'explique bien ou pas ?

Ben non, tu ne donne pas les infos qu'il faut, on doit essayer de comprendre ton besoin et en plus d'en donner une réponse. On te donne des pistes mais ça ne suffit pas.
Tu peux remercie TychoBrahe pour sa réponse, parce que de mon coté je n'aurai pas pris autant de temps pour t'expliquer des notions que tu peux trouver partout sur le web.
Honnêtement, ce n'est pas à toi que je m'en prends mais à tes demandes. Si tu les relis tu verras que soient les personnes ne répondent pas parce qu'elles ne comprennent pas ton besoin, mais qu'au delà tu ne fournis pas assez d'informations sur les pistes que tu as déja exploité.
As-tu juste cherché ce qu'était une jointure ?
Je donne des pistes pour que tu apprennes et non des solutions toutes faites que tu ne saurais comprendre, voire reproduire.
On est tous là pour apprendre à quelqu'un et de quelqu'un.
S.