/ / Joining von Tabellen basierend auf Referenztabellenwert - PHP, MySQL, Datenbank, Join, Normalisierung

Joining-Tabellen basierend auf Referenz-Tabelle Wert - PHP, MySQL, Datenbank, Join, Normalisierung

Habe diese Tische Bildbeschreibung hier eingeben

und gegeben post_map.tag_id="1", Ich hätte gern: Bildbeschreibung hier eingeben

entity_type table bestimmt, welche Tabelle aussehen sollin, d. h. in welcher Tabelle entity_id gespeichert ist. Mein Hauptziel ist es, diese Tabelle als Ergebnis von mysqli :: multi_query () oder mysqli :: query () zu erhalten, d. h. ohne dass PHP mehrfach in die Datenbank wechselt. Diese Tabelle kann viele, viele Zeilen enthalten. Die gleichzeitige Verwendung dieser Tabelle wäre wesentlich effizienter.

Meine bisherigen Versuche:

  • Ich habe die JOIN-Klausel ausprobiert, weiß aber nicht, wie ich den Zeilenwert des vorherigen SELECT als Tabellennamen für die JOIN-Klausel verwenden soll.
  • Versuchte vorbereitete Anweisungen, kann jedoch nichts brauchbares bilden.

Antworten:

1 für die Antwort № 1

Dies kann mit IF () und JOIN erfolgen. Ich habe eine Lösung für Sie, führen Sie die Abfrage aus ...

SELECT et.type,
IF(et.type="resource",r.resource_type_id,NULL) AS resource_type_id,
IF(et.type="resource",r.value,NULL) AS value,
IF(et.type="user",u.name,NULL) AS name,
IF(et.type="link",l.source,NULL) AS source,
IF(et.type="link",l.count,NULL) AS count
FROM `post_map` as pm
JOIN `entity_type` as et ON pm.entity_id = et.id
LEFT JOIN `resource` as r ON pm.entity_type_id=r.id
LEFT JOIN `user` as u ON pm.entity_type_id=u.id
LEFT JOIN `link` as l ON pm.entity_type_id=l.id
WHERE pm.tag_id="1"