Verschachtelte Schleife
Oli200 02.06.2003 - 23:00 1064 19
Oli200
Little Overclocker
|
Ich habe ein Problem ich möchte eine mysql datenbank auslesen und muss aber von der reihenfolge zuerst eine teil von der ersten tabelle dann einen teil auf einer zweiten und dann einen zweiten teil aus der ersten tabelle auslesen. aber das problem ist das ich das mehr als einmal machen muss und für eine unbestimmte zahl von einträgen! hat wer einen Tip für mich? ich bin ein bisschen planlos! MFG Oli
|
murcielago
Dr. Doom
|
gib konkrete problemstellung an. dann isses für alle leichter.
|
Tex
got r00t?
|
das musst du genauer erklären - welche tabellen - welche daten möchtest du genau wozu auslesen?
|
Jedi
PROGrAMmER
|
in welcher Umgebung (C/php/...) willst du die Daten auslesen? edit: hab zuerst mysql mit oracle verwechselt
Bearbeitet von Jedi am 02.06.2003, 23:08
|
watchout
Legendundead
|
bin mir ziehmlich sicher, dass man deine problemstellung mittels einer wohldurchdachten mysql-abfrage lösen kann - alles andere wär' von der performance-seite gesehn auch schwachsinn
|
atrox
in fairy dust... I trust!
|
viele die an mich solche (ähnlichen) fragen herangetragen haben, bzw dessen code ich gesehen habe, hätten das selbe mit wenigen wohldurchdachten sql-anfragen lösen können.
mit einer mengen-orientierten sprache wie sql lassen sich viele sachen meist leichter lösen, und laufen schneller am server, da 1) die daten nicht übertragen werden müssen 2) der query-optimierer einblicke in die physikalische datenhaltung hat.
|
atrox
in fairy dust... I trust!
|
beispiel für ein join über 3 tabellen: (namen sind extra-sprechend gewählt, und entsprechen daher keiner konvention)
TABELLE "Schueler" - schuelerNr - vorname - nachname - geschlecht - svnr - klassenbezeichnung
TABELLE "Klasse" - Klassenbezeichnung - Raum - Klassenvorstand
TABELLE "Lehrer" - Lehrerkuerzel - vorname - nachname - lehrerzimmer - geschlecht
Beispiel: Alle Schüler die Lehrer "XYZ" als Klassenvorstand haben (Lehrer kann in mehreren Klassen Vorstand sein).
SELECT s.vorname,s.nachname FROM schueler s, klasse k, lehrer l WHERE s.klassenbezeichnung=k.klassenbezeichnung AND k.klassenvostand=l.lehrerkuerzel AND l.nachname='XYZ';
|
Jedi
PROGrAMmER
|
Ich nehm mal an, dass Oli200 schon die SQL-Grundlagen kann lustig wirds allerdings, wennst >3 komplexe sub-selects verschachteln musst btw: ich persönlich find den Threadtitle unpassend ....
|
Oli200
Little Overclocker
|
ich will in Php meine daten für die homepage auslesen!
ich möchte ein Menü machen! mit tabellen! ich hab mir das so gedacht das ich das so mache das ich zuerst den titel für die tabelle aus der datenbank auslese und dann die menüpunkte aus einer anderen tabelle der datenbank auslesen! da hab ich jetzt keine ahnung wie ich das machen soll oder ob ich das überhaupt so machen soll! und dass soll dann halt für mehrere tabellen für das menü funktionieren!
|
Jedi
PROGrAMmER
|
ich würds in eine Tabelle haun und und eine hirachie anlegen (id, level, parent) und damit kannst dann alles in einer Tabelle verwalten, was nicht nur schneller, sondern auch einfacher geht.
|
Oli200
Little Overclocker
|
wie mach ich das?
|
Guest
Deleted User
|
2 möglichkeiten:
tabelle menu: id, data [zB name, link, farbe,...], parent
oder
tabelle menu: id, data [zB name, link, farbe,...] tabelle references: id, id_parent, id_child
in beiden fällen kannst eine baumstruktur abbilden.
Bearbeitet von am 03.06.2003, 09:46 (rettich = koffer )
|
Jedi
PROGrAMmER
|
ups.... level hät noch weggehört.
es reicht id und parent. damit hat jedes Element ein übergeordnetes und du kommst wieder auf eine 1:n Beziehung, wie es bei einem Menü mit Untermenü auch sein sollte. wie du dann aus den Daten deine HTML-Struktur gewinnst, ist dir überlassen. Dazu hast du außerdem noch zu wenig Infos über das Menü-Layout gegeben.
zuerst wollt ich ein etwas komplexeres Verfahren angeben, aber um das zu erklären fehlt mir jetzt die Zeit.
|
atrox
in fairy dust... I trust!
|
bei oracle gibts das sogenante Tree Walking, bei der quasi die rekursion der auflösung der hierarchischen struktur einer tabelle am server stattfindet. zusätzlich gibt es pseudo-variablen die zb. die tiefe jedes elemens beinhalten (usw). nützliches feature (das aber auch seine einschränkungen hat) http://www.josephfeller.com/teachin...2/mcavoy-11.pdf
|
Jedi
PROGrAMmER
|
bei oracle gibts das sogenante [...] leider gehts um mysql ... oder gibts des da auch schon?
|