Query mit 2 verschiedenen Subquerys?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Query mit 2 verschiedenen Subquerys?

    Hallo,

    kann man eigentlich in einem Query 2 bzw. 3 Querys durchführen?
    Der Hauptquery soll abfragen ob ein bestimmter Wert vorhanden ist und wenn das der Fall ist,
    soll der eine Query durchgeführt werden, ansonsten ein anderer.
    Klar könnte ich die Querys aufsplitten und jeweils abfragen und dann per Bedingung den "Subquery" setzen,
    aber es ist leider nicht möglich, deswegen muss versuchen, es per Subqueries zu lösen? Wie mach ich das?
  • Hi,
    IF Bedingungen sind möglich.

    Quellcode

    1. SELECT IF(kind="user",(SELECT username FROM user WHERE id=userID),(SELECT groupname FROM group WHERE id=groupID)) FROM members

    Aber solche Subqueries werden dann für jeden Datensatz ausgeführt und sind deutlich langsamer.
    Bleiben zwei weitere Varianten, die effizienter sind
    1) LEFT JOINs

    Quellcode

    1. SELECT IF(kind="user,user.username,group.groupname) AS name
    2. FROM members
    3. LEFT JOIN user ON members.kind = "user" AND members.id = user.id
    4. LEFT JOIN group ON members.kind = "group" AND members.id = group.id

    2) UNION

    Quellcode

    1. SELECT username
    2. FROM members
    3. INNER JOIN user ON members.kind = "user" AND members.id = user.id
    4. UNION ALL
    5. SELECT username
    6. FROM members
    7. INNER JOIN group ON members.kind = "group" AND members.id = group.id


    Die Left Joins sind wohl in den meisten Szenarien die beste Lösung.