Ich habe eine Reihe von drei Tabellen:MySQL: Mehrspaltiger Join über mehrere Tabellen hinweg?
Dining_Tables; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | dining_table | int(11) | NO | PRI | NULL | | | bus_boy | varchar(35) | NO | | NULL | | | waiter | varchar(35) | NO | | NULL | | | server | varchar(35) | NO | | NULL | | +--------------------+--------------+------+-----+---------+-------+ Poker_Tables; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | poker_table | int(11) | NO | PRI | NULL | | | dealer | varchar(35) | NO | | NULL | | | pit_boss | varchar(35) | NO | | NULL | | +--------------------+--------------+------+-----+---------+-------+ Computer_Tables; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | computer_table | int(11) | NO | PRI | NULL | | | programmer | varchar(35) | NO | | NULL | | +--------------------+--------------+------+-----+---------+-------+
Jede dieser Zeilen hat global eindeutige Tabellen-ID mit ihm verbunden: (dining_table
, poker_table
, computer_table
) Die anderen Spalten speichern Sie die Vor-/Nachname der Person die Rolle erfüllen.
In meinem Modell kann eine einzelne Person mehrere Dinge tun. Zum Beispiel könnte Joe Smith simultan an einem computer_table
als Programmierer sitzen, bei einem poker_table
als Händler sitzen und auf einen dining_table
als Kellner warten.
Meine Frage ist dies: Ich möchte eine Abfrage, mit der ich alle table_ids
für eine bestimmte Person abrufen kann. Insbesondere würde die Abfrage dann eine Liste von table_ids
zurückgeben, an der sich Joe Smith momentan befindet.
Ich könnte etwas in diese Richtung tun:
select dining_table from Dining_Tables where bus_boy = "Joe Smith" or waiter = "Joe Smith" or server = "Joe Smith"; select poker_table from Poker_Tables where dealer = "Joe Smith" or pit_boss = "Joe Smith"; select computer_table from Computer_Tables where programmer = "Joe Smith";
Allerdings, das ist drei separate Abfragen und ich würde es vorziehen, wirklich tun, um zu vermeiden, dass, wenn möglich. Kann ich das in einer Abfrage mit Joins machen?
Perphaps eine bessere Art des Titels der Frage ist MySQL: Multi- "ROW" Join über mehrere Tabellen? .. das ist, war Sie gefragt haben an erster Stelle ... Sie nicht zwei oder mehr zusammenführen SELECT "Spalten" mit einem Kriterium. – Victor