Hi,
also mein problem ist das ich 3 tabellen miteinander verknüpfen will, und zwar haben eigentlich alle tabellen das gleiche schema:
Tabelle autos
id name
Tabelle fahrräder
id name
Tabelle boote
id name
so, wenn man sich jetzt ein auto ansieht so kann es sein das dieses auch noch mit einem anderen auto, fahrrad und/oder einem boot verknüpft ist. Sobald das Auto "Jaguar" mit dem Fahrrad "Shimano" verknüpft ist so soll jeweils auf beiden seiten ein link zu dem jeweilign partner zu finden sein (verstanden
).
dazu hab ich noch eine 4. tabelle:
Tabelle links
id link1_id link1_type link2_id link2_type
ich hatte das nun für die ersten beiden tabellen so gelöst, das funktioniert auch, aber wenn ich nun auch noch die tabelle da mit eingliedere habe ich 6 UNIONS und eine meiner meinung nach viel zu aufgeblasene abfrage, geht das nicht auch viel geschickter?
also mein problem ist das ich 3 tabellen miteinander verknüpfen will, und zwar haben eigentlich alle tabellen das gleiche schema:
Tabelle autos
id name
Tabelle fahrräder
id name
Tabelle boote
id name
so, wenn man sich jetzt ein auto ansieht so kann es sein das dieses auch noch mit einem anderen auto, fahrrad und/oder einem boot verknüpft ist. Sobald das Auto "Jaguar" mit dem Fahrrad "Shimano" verknüpft ist so soll jeweils auf beiden seiten ein link zu dem jeweilign partner zu finden sein (verstanden
dazu hab ich noch eine 4. tabelle:
Tabelle links
id link1_id link1_type link2_id link2_type
ich hatte das nun für die ersten beiden tabellen so gelöst, das funktioniert auch, aber wenn ich nun auch noch die tabelle da mit eingliedere habe ich 6 UNIONS und eine meiner meinung nach viel zu aufgeblasene abfrage, geht das nicht auch viel geschickter?
PHP:
SELECT autos.id AS id, autos.name AS name, 'auto' AS type
FROM autos
LEFT JOIN links
ON (autos.id = links.link2_id AND links.link2_type='auto')
WHERE link1_id = '$AUFGERUFENE_ID' AND link1_type = 'auto'
UNION
SELECT autos.id AS id, autos.name AS name, 'auto' AS type
FROM autos
LEFT JOIN links
ON (autos.id = links.link1_id AND links.link1_type='auto')
WHERE link2_id = '$AUFGERUFENE_ID' AND link2_type = 'auto'
UNION
SELECT fahrraeder.id AS id, fahrraeder.name AS word, 'fahrrad' AS type
FROM fahrraeder
LEFT JOIN links
ON (fahrraeder.id = links.link2_id AND links.link2_type='fahrrad')
WHERE link1_id = '$AUFGERUFENE_ID' AND link1_type = 'auto'
UNION
SELECT fahrraeder.id AS id, fahrraeder.name AS word, 'fahrrad' AS type
FROM fahrraeder
LEFT JOIN links
ON (fahrraeder.id = links.link1_id AND links.link1_type='fahrrad')
WHERE link2_id = '$AUFGERUFENE_ID' AND link2_type = 'auto'