"We are back" « oc.at

Verschachtelte Schleife

Oli200 02.06.2003 - 23:00 1064 19
Posts

Oli200

Little Overclocker
Registered: Jan 2003
Location: Austria
Posts: 92
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 :cool:

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689
gib konkrete problemstellung an. dann isses für alle leichter.

Tex

got r00t?
Avatar
Registered: Aug 2000
Location: salzburg
Posts: 1844
das musst du genauer erklären - welche tabellen - welche daten möchtest du genau wozu auslesen?

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
in welcher Umgebung (C/php/...) willst du die Daten auslesen?


edit: hab zuerst mysql mit oracle verwechselt :bash:
Bearbeitet von Jedi am 02.06.2003, 23:08

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: May 2002
Location: linz
Posts: 1871
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
Registered: Jan 2003
Location: Austria
Posts: 92
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
Avatar
Registered: May 2002
Location: linz
Posts: 1871
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
Registered: Jan 2003
Location: Austria
Posts: 92
wie mach ich das?

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
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 :bash:)

Jedi

PROGrAMmER
Avatar
Registered: May 2002
Location: linz
Posts: 1871
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!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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
Avatar
Registered: May 2002
Location: linz
Posts: 1871
Zitat von atrox
bei oracle gibts das sogenante [...]
leider gehts um mysql ...

oder gibts des da auch schon?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz