2017-09-19 5 views
0

Ich habe die folgenden 3 Tabellen und möchte in die "Inventory" -Tabelle, wo user_id = user_id und möchte alle "Ownedskins" von einem Benutzer mit dieser ID zeigen.MySql Join mehr als 2 Tabellen?

Wie kann ich das tun?

Danke für alle Antworten!

The three tables

+1

Mögliche Duplikat [Joining drei Tabellen mit MySQL] (https://stackoverflow.com/questions/3709560/joining-three-tables-using-mysql) – Phonolog

Antwort

0

Vorausgesetzt, dass Sie die user_id kennen, könnten Sie das mit einer einzigen join tun, so:

SELECT 
    ownedskins.* 
FROM 
    ownedskins JOIN inventory ON ownedskins.inventory_id = inventory.inventory_id 
WHERE 
    inventory.user_id = x 

Wo x die ID des Benutzers möchten Sie

Sie auch mit alias tun können, um es sauberer aussehen:

SELECT 
    os.* 
FROM 
    ownedskins os JOIN inventory i ON os.inventory_id = i.inventory_id 
WHERE 
    i.user_id = x 
+0

Es funktioniert, danke! Weißt du auch, wie man die ID von dem Spieler erhält, der sich vorher angemeldet hat? Also kann ich diese ID für das x verwenden. Ich verwende den folgenden Code, um mich in einem anderen Skript anzumelden: [link] (https://imgur.com/a/lELVD) –

+0

Kein Problem. Über deine andere Frage, was meinst du mit 'vorher angemeldet '? Wenn Sie versuchen, die 'id' des Benutzers zu erhalten, der sich anmeldet, sollten Sie Ihre Abfrage in 'SELECT user_id, userpassword FROM ...' ändern und dann '$ row ['user_id']' – Piyin

+0

[link] speichern (https://imgur.com/a/fi1LE) Ich möchte die $ _SESSION ['user_logged'] in einem anderen Skript aufrufen, wie ist das möglich? Dies speichert die ID des Benutzers, der sich in meinem Skript angemeldet hat. –

0

Angenommen, Sie haben die folgenden Tabellen:

Driver 
Car 
Keys 

Wenn Sie Zugriff auf alle wollen 3 von ihnen Sie Folgendes tun können:

SELECT D.name, C.plate, K.state 
FROM Driver D, Car C, Keys K 
WHERE C.key_id = K.id and 
     K.owner_id = D.id; 

Verwendung VERBINDUNGEN:

SELECT D.name, C.plate, K.state 
FROM  Car C JOIN Keys K 
       ON C.key_id = K.id JOIN Driver D 
        ON K.owner_id = D.id; 
+1

Fördern Sie die Verwendung von expliziten 'JOIN' sintaxis, Aaron Bertrand schrieb einen schönen Artikel [Bad Gewohnheiten zu treten: mit alten Stil JOINs] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-old-style-j oins.aspx) darüber. –

1

mehr als 2 Tische mit MySql Beispiel Joining:

SELECT i.* 
FROM  ownedskins o 
      JOIN inventory i 
       ON o.inventory_id=i.inventory_id 
      JOIN user u 
       ON u.user_id = i.user_id 
WHERE  u.user_id = 1 
1

verbindet ist sehr einfach, so etwas wie folgt verwenden:

SELECT * 
FROM table1 t1 
JOIN table2 t2 ON t1.id = t2.id 
JOIN table3 t3 ON t2.id2 = t3.id 

Sie auch JOIN Varianten verwenden können, wie LEFT JOIN, INNER JOIN, OUTER JOIN ...