Einfache/Komplexe MySQL Abfrage

X

xenon96

Mitglied
Thread Starter
Dabei seit
21.07.2012
Beiträge
24
Reaktionspunkte
0
Hallo Community, :)

ich hab da mal eine Frage wie ich eine MySQL-Abfrage zu folgender Situation löse: :d

Tabellellayout:

Node_ID | Link_ID (übersichtshalber mal N und L)

N | L
1 | 2
5 | 1
5 | 9
4 | 3

Das ganze bezieht dich auf ein Nachrichtenportal (also keine Chat-Nachrichten, sondern Neuigkeiten-Nachrichten :cool:).

Funktionieren tut das dann so:
- Ein User Registriert sich und wählt in welchem Ort er wohnt (z.B. "9")
- Es gibt die oben genannte Tabelle die nahe gelegene Orte miteinander verknüpfen soll - also wenn ich in "9" wohne soll ich die Nachrichten von 5 sehen können (Verknüpfung 5 - 9) aber auch die von "1" (V. 5 - 1 (weil "9" ja auch mit "5" verknüpft ist: 9 => 5 => 1)) aber auch von "2" (V. 1 - 2 (weil "2" ja auch mit ....: 9 => 5 => 1 => 2))

- Letztendlich möchte ich also wenn ich als "Eingangswert" die 9 habe die 5, 1 und 2 herausbekommen


Kann mir dazu jmd eine MySQL abfrage bieten die nicht unbedingt darauf beruht wieviele Ebenen ich überprüfen möchte (z.B. nur eine Ebene: 9 => 5, oder 2 E.: 9 => 5 => 1, ...))

Falls das Problem dennoch einfach zu komplex ist mach ich es halt mit mehreren Abfragen in PHP ... :(
 
überdenke noch mal dein Datenbankdesign.
wenn du das wirklich rekursiv auflösen willst ist die antwort einfach. dann brauchst du nur "select N from TABELLE". Immer vorausgesetzt es gibt keine exklaven.... eventuell noch ein distinct mit dazu nehmen!
 
vielen dank erstmal für die zügige Antwort :)

Da dies schon meines achtens die simpelste und ressourcen-schonendste Variante ist werde ich das Problem dann wohl mit PHP lösen und nicht mit der MySQL-Abfrage.

Ich habe zwar etwas in Richtung eines Lösungsansatzes gefunden, jedoch war das nicht das gelbe vom Ei.

Code:
SELECT
	*
FROM
	Network_Links AS parent
JOIN
	Network_Links AS child
ON
	parent.Node_ID=child.Link_ID
	OR
	child.Link_ID=parent.Node_ID
AND
	parent.Link_ID=9
	OR
	parent.Node_ID=9
wobei "9" der Standort ist und alle Verknüpfungen abgerufen werden sollen
 
Zurück
Oben Unten