Ich habe eine Indextable, die eine content_id halten und colomn eingeben. (z. B. content_id = 1, type = audio. Content_id = 1, type = video) Wäre es möglich, die richtigen Daten basierend auf content_id aus den richtigen Tabellen (Tabellen: ContentVideo, ContentAudio) zu bekommen?MySQL Mehrere auswählen
Antwort
Haben Sie CASE oder IF versucht?
Ich habe in der MysSQL auf den Link gelesen, den Sie gaben. Das Konzept ist klar, die Beispiele sind dürftig, aber ich habe ein wenig gesucht und genau das gefunden, was ich benötigt habe, basierend auf Ihrer CASE-Geste. Vielen Dank! Für andere Leute, die auf die gleiche Sache stolpern könnten. Hier ist der Link, den ich brauchte (ein SELECT basierend auf einem CASE-Schalter) http://forums.mysql.com/read.php?10,245909,245990#msg-245990 –
Nun, kein Problem! ;) –
Ich nehme an, Sie die Inhalte über eine einzige Select-Anweisung abrufen möchten? Wenn das Layout Ihrer Inhalte Tabellen ist genau das gleiche können Sie UNION verwenden:
SELECT ca.* FROM contentaudio ca, indextable it
WHERE ca.content_id = it.content_id
AND it.content_type = 'audio'
UNION
SELECT cv.* FROM contentvideo cv, indextable it
WHERE cv.content_id = it.content_id
AND it.content_type = 'video'
ORDER BY content_id /* or whatever */
Beachten Sie, dass, wenn content_id
über alle Ihre content
Tabellen nicht eindeutig ist, können Sie mehrere Datensätze erhalten (unterschiedlicher Typen) für den gleichen content_id
. Beachten Sie außerdem Folgendes: Wenn Sie einen bestimmten Datensatz auf Basis eines Schlüssels von indextable
auswählen, müssen Sie ihn jedem Teil der Union hinzufügen.
Wenn Ihr content
Tabellen verschiedenen Layouts haben, können Sie eine OUTER JOIN stattdessen verwenden und Ihre verschiedenen Inhaltstypen als Teil eines Datensatzes abzurufen (Fehlenden wird als NULL-Werte zurückgegeben werden):
SELECT * FROM indextable it
LEFT OUTER JOIN contentaudio ca ON it.content_id = ca.content_id
LEFT OUTER JOIN contentvideo cv ON it.content_id = cv.content_id
WHERE it.some_key = ?
Beachten Sie, dass content_type
ist in diesem Fall überhaupt nicht beteiligt (und Sie brauchen es auch nicht für UNION).
- 1. mehrere mysql Abfragen auswählen
- 2. MySQL mehrere Zeilen in einer Zeile auswählen
- 3. MySQL-Abfrage mit mehreren Tabellen-Joins schreiben oder mehrere auswählen
- 4. Auswählen von Daten über mehrere Tabellen hinweg in MySQL
- 5. Auswählen und Einfügen über mehrere Datenbanken mit MySQL
- 6. JQuery - Mehrere Optionen auswählen
- 7. Mehrere Maximalwerte auswählen
- 8. MySQL Hilfe auswählen; Unterabfrage?
- 9. MySQL Abfrage auswählen
- 10. MySQL: Wie Bereich in mysql auswählen?
- 11. Diagramm manipulieren Mehrere Zeitreihen auswählen
- 12. Django Admin Filter mehrere auswählen
- 13. Mehrere Nachkommen mit jQuery auswählen?
- 14. PHP mehrere Array-Tabellen auswählen
- 15. aus Abfrage mehrere Werte auswählen
- 16. mysql in mehreren Bedingung auswählen
- 17. MySql innerhalb eines anderen auswählen?
- 18. MySQL Datum gleich heute auswählen
- 19. MySQL zwei Tabellen gleichzeitig auswählen
- 20. MySQL Cross Server Abfrage auswählen
- 21. mysql in returns auswählen NULL
- 22. MySQL am nächsten Wert auswählen
- 23. Auswählen eines Schwimmers in MySQL
- 24. Mehrere Tabellen ohne AS (Alias) auswählen?
- 25. MySQL mehrere Fremdschlüssel zählen
- 26. mySQL mehrere INNER JOIN
- 27. MySQL Wählen Sie mehrere Werte
- 28. Mysql php mehrere wählen, sortieren
- 29. MySQL Benutzer nach mehreren Kriterien auswählen
- 30. MySQL aus zwei Tabellen auswählen, indem 3. verbunden (mysql Joins)
können Sie genau klären, welche Tabellen Sie haben und welche Felder sie haben? –
Ich habe das Tag "polymorphe Assoziationen" hinzugefügt, weil Sie das tun. Folgen Sie dem Tag, um weitere Fragen zu diesem Datenbankentwurf zu sehen. –