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

4 réponses


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,'
?>
flo3376
Auteur

houlà pas sur de comprendre

je vais tester et décortiquer

merci

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 !