2010-11-30 55 views
1

Voici ce que je veux faire:Mysql. Sélectionnez les données à partir de 3 tables différentes en fonction de la colonne de 1 table

je 3 tables: musicItems, photoItems, textItems
Chaque table comporte des colonnes différentes.

Table "musicItems" 
    id 
    Owner_id 
    audioId 
    url 
    duration 

Table "photoItems" 
    id 
    albumId 
    userId 
    photoId 
    url 

Table "textItems" 
    id 
    msgText 

Et j'ai une table de

"footprints" 
    id 
    itemType 
    itemId 

Je dois retieve 30 derniers articles de table "empreintes" avec toutes les propriétés en fonction de itemType et itemId. Comment puis je faire ça?

+0

double possible de [Mysql REJOIGNEZ de quatre tables avec deux tableaux] (http://stackoverflow.com/ questions/3824389/mysql-join-of-four-tables-with-two-key-tables) – Stephen

+1

Pouvez-vous élaborer sur la façon dont les colonnes s'alignent (quelle colonne footpritns s'aligne avec quelle colonne musicitems par exemple?) Aussi, je crois vous cherchez à effectuer une jointure GAUCHE/INTÉRIEURE (veuillez consulter http://dev.mysql.com/doc/refman/5.0/fr/join.html) –

+0

Vous devez lire sur JOIN Syntaxe: http: // dev.mysql.com/doc/refman/5.1/fr/join.html – Stephen

Répondre

0

J'ai fait l'hypothèse que la colonne ItemType contient les noms de table le ItemID se réfère à

SELECT * 
FROM footprints fp 
     LEFT OUTER JOIN musicItems mi ON mi.ID = fp.itemID AND fp.ItemType = 'musicItems' 
     LEFT OUTER JOIN photoItems pi ON pi.ID = fp.itemID AND fp.ItemType = 'photoItems' 
     LEFT OUTER JOIN textItems ti ON ti.ID = fp.itemID AND fp.ItemType = 'textItems' 
LIMIT 30 
+0

Il semble que ce soit une bonne réponse. Merci. – Konstantin

+0

Vous êtes les bienvenus et bienvenue à SO. –