Ich möchte überprüfen, ob untergeordnete Zeilen drei Ebenen, zwei Ebenen und eine Ebene tiefer liegen.Wählen Sie eine Unterabfrage aus, um zu überprüfen, ob untergeordnete Zeilen vorhanden sind.
select max(
case
(select row from category where relatedRow in (select row from category where relatedRow=?)) is not null then 3
(select row from category where relatedRow=?) is not null then 2
(select row from category where row=?) is not null then 1
else 0 end
) as level from category
Wie kann ich das funktionieren lassen?
Diese Abfrage lautet wie folgt. Wenn Zeilen mit verwandten Zeilen der zugehörigen Zeilen (Enkel) vorhanden sind, ist level = 3. Wenn es verwandte Zeilen (Kinder) gibt, Ebene 2. Wenn es eine Zeile =? (Eltern), Ebene 1. Wenn kein Elternteil (Geist), Ebene 0.
Ich verstehe. Ich versuche das Level zu erreichen. Ich habe maximal 3 Ebenen, aber ich möchte einen "Fall" verwenden, um die Ebene der Kinder, die der Parameter hat, zurückgeben. Für Ihr Beispiel, wenn row = 1, existiert es, es hat also Kinder und Enkel (level = 3). Aber wenn Zeile = 4, existiert es, es hat Kinder und KEINE Enkel, also (level = 2). Das ist das, was ich benötige. Eine Zahl, die das höchste Niveau von Kindern darstellt. –
In diesem Fall müssen Sie etwas tun: http://StackOverflow.com/Questions/7631048/connect-by-prior-äquivalent-for-mysql –