2012-02-08 4 views
0

Je me bats avec une requête MYSQL - J'ai 2 tables:Select De jointure interne - PHP/MYSQL

Tableau 1 (info) contenant UID, prenom, last_name. Tableau 2 (carte) contenant l'UID, fig.

Ce que je suis en train de faire est d'obtenir tous les résultats dans un tableau:

WHERE UID IN '$ids' AND LEFT(last_name,1) = '$letter' ORDER BY last_name, first_name ASC 

Je me suis un INNER JOIN donc mon code actuel est:

("SELECT UID, first_name, last_name, pic FROM 
    (SELECT info.first_name,info.last_name,card.pic FROM info 
    INNER JOIN card ON info.UID=card.UID) 
    WHERE LEFT(last_name,1) = '$letter' ORDER BY last_name, first_name ASC") 

Cela produit l'erreur suivante si:

'Chaque table dérivée doit avoir son propre alias'. Est-ce que je vais dans ce sens avec la jointure interne, et comment donner un alias à la table dérivée? Merci d'avance!

Répondre

2
select b.UID, g.first_name, g.last_name, b.pic 
from user_data.general_info g 
inner join user_data.Bcards b on g.UID = b.UID 
where LEFT(g.last_name, 1) = '$letter' 
order by g.last_name, g.first_name asc 
+0

Très bien, merci beaucoup. Toutes nos excuses pour les noms de table/DB incohérents. Mais merci pour la solution. Très appréciée. – Zac

1

La requête interne doit être nommée.

SELECT users.UID, users.first_name, users.last_name, users.pic FROM 
    (SELECT info.first_name,info.last_name,card.pic FROM user_data.general_info 
    INNER JOIN user_data.Bcards ON general_info.UID=Bcards.UID) users 
    WHERE LEFT(users.last_name,1) = '$letter' ORDER BY users.last_name, users.first_name ASC