Bonjour,
C'est mon 1er post sur les forums de Developpez.com que je consulte très souvent pour trouver réponse à mes questions. Débutant en MySQL (deux ans que je me suis mis à la programmation en tant que professionnel, autodidacte, sous Windev).
Je dois souvent faire appel à des sous-requêtes, et j'ai souvent fait l’amère expérience de voir que les sous-requêtes sont forcément indépendantes de la requête principale.
Or, il y un cas où, sans vraiment comprendre pourquoi, il m'est possible d'utiliser dans la sous-requête, une rubrique d'une table de la requête principale, alors qu'elle n'est pas jointe dans ma sous-requête.
Exemple:
Ici ,ma sous-requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 UPDATE prat prat LEFT JOIN pr pr ON (prat.id_product = pr.id_product ) SET pr.quantity= ( SELECT SUM(prat.quantity) FROM prat prat WHERE prat.id_product=pr.id_product ) WHERE pr.idproduct IN (1,2)
fait appel à pr.id_product dans le where, Or l'alias pr n'est défini que dans la requête principale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT SUM(prat.quantity) FROM prat prat WHERE prat.id_product=pr.id_product
Ce type de requêtes combinées marche très bien, mais je ne comprends pas pourquoi et surtout je voudrais savoir, quand on peut, ou non, dans une sous-requête, faire appel à des rubriques de tables définies à l'extérieur.
Le seul cas d'utilisation qui semble fonctionner, est le cas des UPDATE sur deux tables liées, comme ci-dessus.
Si quelqu'un peut m'expliquer ou me renvoyer vers une doc expliquant ces principes. Merci d'avance.
Franck
www.sitolog.com







Répondre avec citation
Partager