Ohne eine Spezifikation können wir nur erraten, was die Abfrage zurückgeben soll.
Also hier ist eine Vermutung.
Wir bekommen alle _cat_
wo catname einen gewissen Wert übereinstimmt:
SELECT scd.catid
, scd.catname
, scd.caturl
FROM sound_cat_droos scd
WHERE scd.catname = 'someval'
Wir wissen, dass ein _cat_
die Eltern anderer _cat_
sein könnte. Und wir wollen auch diese Kinder zurückgeben _cat_
. Hier ist eine Abfrage zu tun, dass:
SELECT scc.catid
, scc.catname
, scc.caturl
FROM sound_cat_droos scc
JOIN sound_cat_droos scp
ON scp.catid = scc.parentcatid
WHERE scp.catname = 'someval'
Wir haben eine UNION ALL gesetzt Operator verwenden können, um die Ergebnisse aus diesen beiden Abfragen in einem einzigen Satz zusammenfassen. Und dann können wir diese kombinierten Satz zu _link_
SELECT sld.linkid
, sld.accept
, sca.catid
, sca.catname
, sca.caturl
FROM (SELECT scd.catid
, scd.catname
, scd.caturl
FROM sound_cat_droos scd
WHERE scd.catname = 'someval'
UNION ALL
SELECT scc.catid
, scc.catname
, scc.caturl
FROM sound_cat_droos scc
JOIN sound_cat_droos scp
ON scp.catid = scc.parentcatid
WHERE scp.catname = 'someval'
) sca
JOIN sound_link_droos sld
ON sld.catid = sca.catid
AND sld.accept = '1'
beitreten Wenn es wichtig ist (aus irgendeinem Grund) zu wissen, ob die _cat_
wir abgestimmt eine direkte Übereinstimmung war, oder war ein Spiel, um ein Kind _cat_
, können wir eine umfassen discriminator-Spalte in der Inline-View-Abfrage und gibt diese im Resultset zurück.
SELECT sld.linkid
, sld.accept
, sca.catid
, sca.catname
, sca.caturl
, sca.src
FROM (SELECT 1 AS src
, scd.catid
, scd.catname
, scd.caturl
FROM sound_cat_droos scd
WHERE scd.catname = 'someval'
UNION ALL
SELECT 2 AS src
, scc.catid
, scc.catname
, scc.caturl
FROM sound_cat_droos scc
JOIN sound_cat_droos scp
ON scp.catid = scc.parentcatid
WHERE scp.catname = 'someval'
) sca
JOIN sound_link_droos sld
ON sld.catid = sca.catid
AND sld.accept = '1'
Wir erraten nur die Anforderungen, zu welchem Ergebnis zurückgegeben werden soll. Und diese Abfrage entspricht möglicherweise Ihrer Spezifikation. Aber wir sind nicht was diese Spezifikation ist.
Nein, aber Sie können 2 'LINKE VERBINDUNGEN' haben, die als' OR' fungieren würden. –
können Sie es bitte erklären –
Was ist der richtige Weg, um diese Frage zu beantworten? –