Wie kann ich die Abfrage, wo Eltern-ID haben eine fünf Kind-ID und danach Kind-ID ist eine Eltern-ID und haben eine fünf Kind-id.wie kann ich in unserer Anfrage.tabelle nur nur eine anrufen. Kindly helfen mir dabei confusion.thanks Grüße imadbalochWie können wir MySQL-Abfrage schreiben, wo Eltern-ID eine Kind-ID haben und das nächste Mal Kinder-ID ist eine Eltern-ID, wie kann ich tun?
Antwort
ich weiß nicht, ob ich Sie richtig verstanden habe, aber ich denke so: Sie möchten, dass einige rekursive Abfrage haben für eine Entität mit einigen Kind Einheiten, die ihrerseits zu fragen haben auch Kind-Entitäten (Enkel-Entitäten).
Leider MySQL unterstützt keine Rekursion innerhalb der Abfragen.
Sie müssen es manuell tun, indem Sie mehrere Abfragen verwenden, um nach den untergeordneten Entitäten der untergeordneten Entitäten (Enkel-Entitäten) und ihren untergeordneten Entitäten (grandgrandchild-Entitäten) und so weiter zu fragen.
aktualisieren: Wenn die Tiefe festgelegt ist, sagen wir, Sie sind in den direkten Kind Einheiten interessiert und die Enkel Einheiten (und nicht mehr), dann könnten Sie führen zwei beitritt, zB:
SELECT e.id, e.name, ce.id, ce.name, gce.id, gce.name
FROM <table> AS e
LEFT JOIN <table> AS ce ON ce.parent_id = e.id
LEFT JOIN <table> AS gce ON gce.parent_id = ce.id
Sie können rekursiv mit der Verwendung von JOIN – ajreal
simulieren. Daher müssen Sie die Tiefe der Rekursion kennen, die somit nicht dynamisch sein konnte. Wenn nur untergeordnete Entitäten und Enkel-Entitäten benötigt werden, dann haben Sie Recht, Sie könnten einfach Joins verwenden. Aber wenn die Situation entsteht, dass alle Kind- und Enkel-Entitäten ihre eigenen Kind-Entitäten (und Enkel- und Enkel-Entitäten, etc.) haben könnten, die bestimmt werden müssen, ... – Flinsch
diese Abfrage zeigt nur die Eltern und sein Kind, aber ich möchte Zeigen Sie das Kind des Kindes und vollständige Details – imad
Sie könnten einen Self-Join machen, um das Kind eines Kindes zu bekommen. Unter der Annahme einer Tabelle wie:
Id ChildId ....
----- ------- -----
....
Etwas wie:
SELECT a.Id as EntryId, a.ChildId as ChildId, b.ChildId as GrandchildId
FROM <tablename> a INNER JOIN <tablename> b ON a.ChildId = b.Id
Der Nachteil ist, dass für jede Ebene der Hierarchie Sie Sie einschließen möchten, müssen eine andere beitreten.
UPDATE
auf Kommentare reagieren.
Dies ist nicht ein Enkelkind pro Elternteil. Wenn der Elternteil 5 Kinder hat und jedes Kind 4 Kinder hat, werden insgesamt 20 Zeilen zurückgegeben.
Um eine volle Detail der Enkel bekommen Sie brauchen selbst kommen wieder, wie folgt aus:
SELECT a.Id as EntryId, a.ChildId as ChildId, b.ChildId as GrandchildId, c.*
FROM (<tablename> a INNER JOIN <tablename> b ON a.ChildId = b.Id)
INNER JOIN <tablename> c ON b.ChildId = c.Id
So könnte jede Entität nur eine einzige untergeordnete Entität haben. Das ist keine Hierarchie. In einer Hierarchie könnte eine Entität 0 bis * n * untergeordnete Entitäten haben und eine übergeordnete Entität (sofern es sich nicht um eine Entität auf oberster Ebene handelt). – Flinsch
Diese Abfrage zeigt nur die Eltern und sein Kind, aber ich möchte das Kind des Kindes und vollständige Details zeigen – imad
Try Below Abfrage:
DECLARE @id INT
SET @id = 5
CREATE TABLE #temp (id INT , ParentId INT)
INSERT INTO #temp VALUES(1,0);
INSERT INTO #temp VALUES(2,1);
INSERT INTO #temp VALUES(3,2);
INSERT INTO #temp VALUES(4, 3);
INSERT INTO #temp VALUES(5,4);
WITH parent AS
(
SELECT id, parentId from #temp WHERE id = @id
UNION ALL
SELECT t.id, t.parentId FROM parent
INNER JOIN #temp t ON t.id = parent.parentid
)
SELECT id,ParentId FROM parent
WHERE id <> @id;
Drop TABLE #temp;
- 1. Schreiben Sie eine Einfügung oder aktualisieren und prüfen Sie Entity-Änderungen Wie kann ich das tun?
- 2. Können wir eine Hashtable in eine Datei schreiben?
- 3. Haben Sie eine Methode und eine Funktion, die dasselbe tun?
- 4. können wir eine WizardPage in einer WizardPage in SWT haben?
- 5. Wenn Grundtypen Objekt sind, warum können wir das nicht tun?
- 6. Wie kann ich eine einfache Schluckfunktion schreiben?
- 7. Wie kann ich meinen Code an die aktuelle Position erinnern und das nächste Mal das nächste Element anzeigen?
- 8. können wir das in C++ schreiben?
- 9. Wie kann ich eine Unpivot-Abfrage schreiben?
- 10. Können wir in Task.Run eine while-loop-Logik haben?
- 11. Wie viele JVM können wir in einer Maschine haben?
- 12. Wie kann ich programmatisch das nächste Mal erhalten, wenn ein bestimmter Alarm eingestellt ist?
- 13. Async/erwarten wirft NullReferenceException Wie können wir diagnostizieren, wo wir es vermasselt haben?
- 14. Können wir eine generische HystrixCommand-Unterklasse haben, von der aus wir verschiedene Abhängigkeiten aufrufen können?
- 15. Können PHP-Arrays das tun?
- 16. Können wir eine Reihe von benutzerdefinierten Modulen haben?
- 17. Wie kann ich eine leere Titelseite haben?
- 18. Können wir eine Funktion ohne einen Namen in C haben?
- 19. Können wir eine Auswahlabfrage in einen Aggregatfunktionsparameter schreiben?
- 20. Wie kann ich eine Prozedur für ... schreiben?
- 21. Wie können wir eine Kopie der Struktur rekursiv in eine andere Tabelle einfügen, wenn wir eine Eltern/Kind-Schlüsseltabelle verwenden?
- 22. Wie kann ich eine lockfreie Struktur schreiben?
- 23. Wie können wir eine Callable in eine runnable
- 24. Wie können wir schreiben eine benutzerdefinierte Methode ist Objective C/Swift mit Abschluss Handler
- 25. Wie kann ich eine Regex schreiben, die nicht gierig ist?
- 26. Können wir Funktionszeiger in Google Go haben?
- 27. Groupby distinct Wie kann ich das tun?
- 28. Wie können wir eine Datei in Ziel c entpacken?
- 29. Können wir eine anonyme Struktur als Vorlage-Argument haben?
- 30. Können wir eine Zuweisung in einer Bedingung haben?
Antwort auf das gleiche Problem Siehe: http: //stackoverflow.com/a/33699713/5559741 – wajeeh