Bonjour à tous,
il y a quelque mois j'avais abandonné le left join et préféré utilisé plusieurs requête qui se suivent, mais voilà,
je vai devoir retourné sur du left join car je vais devoir une grosse requéte SQL.
A l'époque ou j'ai abandonnée le left join c'était due a un fonctionnement aléatoire de la requête dans mes php.
Il fallait optimiser la requête avec des "as".
Mais voilà cette simple chose m'échappe totalement.
pourriez vous m'aider avec cette requête?
Merci d'avance flo.
select
phpbb_users.user_id,
phpbb_users.username,
phpbb_profile_fields_data.user_id,
phpbb_profile_fields_data.pf_icao,
tracker_cil_airports.icao,
tracker_cil_airports.name,
tracker_cil_airports.lat,
tracker_cil_airports.lng
from phpbb_users
LEFT JOIN phpbb_profile_fields_data ON phpbb_users.user_id = phpbb_profile_fields_data.user_id
LEFT JOIN tracker_cil_airports ON phpbb_profile_fields_data.pf_icao = tracker_cil_airports.icao
WHERE tracker_cil_airports.icao IS NOT NULL
Bonjour,
voila ta requête :
<?php
('SELECT
u.user_id,
u.username,
d.user_id AS profile_id,
d.pf_icao,
a.icao,
a.name,
a.lat,
a.lng
FROM phpbb_users u
LEFT JOIN phpbb_profile_fields_data d
ON u.user_id = d.user_id
LEFT JOIN tracker_cil_airports a
ON d.pf_icao = a.icao
WHERE a.icao IS NOT NULL')
?>
A la ligne 5, le 'AS' est optionnel, tu peut l'écrire :
<?php
'd.user_id profile_id,'
?>
En faite, on renomme les tables à 'FROM' et 'LEFT JOIN' en écrivant une lettre ou un mot.
Et ensuite on place cette lettre avant chaque champs pour bien les différencier, savoir facilement à quel table ils appartiennent.
Il est aussi possible de renommé les champs d'une table, de ce faite, tu peu avoir 2 tables qui ont un champ du même nom, un mauvais exemple chez toi (je vient de m'en apercevoir..) 'user_id'!
Ils ont tous les 2 le même contenu, donc en sélectionner 1 suffit.
Je suis le résonnement de Wilose, toute fois, as tu penser à changer ton moteur de stockage (si tu le peut ?) en InnoDB ?
InnoDB gère les relations , un gros avantage !