enibib
Messages postés15Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention19 janvier 2010
-
24 mars 2009 à 16:13
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
25 mars 2009 à 18:25
Bonjour après une recherche sur plusieurs forum je n'arrive pas à trouver une solution a mon problème.
Voici a quoi ressemble mes 2 tables :
table_1 :
Id_1 - nom - prenom
table_2 :
Id_2 - rappel
et voici la requete que je voudrais faire (fausse bien pour le moment) désolé pour la syntaxe mais je pense que c'est plus explicite qu'un long discourt :SELECT * from table_1 WHERE ( table_1.Id_1 table_2.Id_2) AND WHERE (table_2.Rappel 'on' )
Jusqu'à présent je passé par plusieurs requêtes pour avoir mon résultat .Comment est-il possible de n'en faire qu'une seule svp?? <?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 11.25pt; HEIGHT: 11.25pt" alt="" type="#_x0000_t75"><v:imagedata o:href="http://www.sqlfr.com/imgs2/smile_blush.gif" src="file:///C:\DOCUME~1\dlebret\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 24 mars 2009 à 17:01
bonjour
la clause WHERE ne doit apparaitre qu'une fois.
si tu veux mettre plusieurs conditions, tu les sépares uniquement par des opérandes logiques : AND, OR,...
avec des parenthèses si tu veux
d'autre part, il y a un autre problème dans ta requête, car tu fais des comparaison sur des champs de ta table 2, alors que celle-ci n'est pas spécifiée dans ta clause FROM. ça pourra pas fonctionner.
donc soit tu fais une jointure :
SELECT ID_1, Nom, Prenom
FROM Table_1, Table_2WHERE ( table_1.Id_1 table_2.Id_2) AND (table_2.Rappel 'on' )
soit tu passes par une requete imbriquée :
SELECT *
FROM Table_1
WHERE Id_1 IN (SELECT Id_2 FROM Table_2 WHERE Rappel = 'on')
enibib
Messages postés15Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention19 janvier 2010 24 mars 2009 à 17:12
Je te remerci pour ta réponse c'est exactement ce que je chercher et n'arrivé pas à faire .Je n'est pas testé mais les 2 solutions vont beaucoup m'aider
enibib
Messages postés15Date d'inscriptionmercredi 11 mars 2009StatutMembreDernière intervention19 janvier 2010 25 mars 2009 à 09:08
Merci pour cette nouvelle solution mais j'ai résolu mon problème avec la solution précédente qui marche très bien :
SELECT *
FROM Table_1
WHERE Id_1 IN (SELECT Id_2 FROM Table_2 WHERE Rappel = 'on')
PS : Tu veu parler INNER JOIN surement ? faute de frappe mais à signaler quand même merci encore pour votre aide précieuse
Vous n’avez pas trouvé la réponse que vous recherchez ?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201136 25 mars 2009 à 18:25
Oui c'est innet join
La requete est plus performante et plus maintenable qu'avec une sous requete
elle est meme plus performante normalement que la from table1, table2
car il n'y a pas de produit cartesien (normalement les optimiseurs des bases de données l'optimise)