Auswahl mit SELETC
am 05.11.2004 09:50:46 von Uwe
Hallo zusammen
Wie kann ich mit Hilfe von SELETC eine abfrage programmieren wie im Beispiel
Gezeigt.
Deutschland ? Sachsen ? Leipzig
Deutschland ? Sachsen ? Chemnitz
und so weiter ...
Also zu erst das Land auswählen und dann sollen alle passenden Bundesländer
zu denn Land angezeigt werden. Wenn man dann das Bundesland aus gewählt hat
sollen die passenden Stätte angezeigt werden.
Ich danke euch schon mal in voraus für eure Hilfe
Re: Auswahl mit SELETC
am 05.11.2004 10:10:45 von Lehnhard Luetzen
Uwe schrieb:
> Also zu erst das Land auswählen und dann sollen alle passenden Bundesländer
> zu denn Land angezeigt werden. Wenn man dann das Bundesland aus gewählt hat
> sollen die passenden Stätte angezeigt werden.
Wenn eine Auswahl erfolgt wird ein HTTP Request durchgeführt? Oder
sollen bereits alle Daten auf Deiner Seite geladen sein?
Wie ist denn Deine Datenbankstruktur? Hast Du eine? Soll zu deinen
Ländern, Bundesländern und Städten weitere informationen aufgenommen
werden oder ist das nur als Gliederung gedacht?
Wenn Du eine Strucktur hast dann ja voraussichtlich etwas in der Form
Land Bland Stadt
----- -------- --------
LID BID SID
.... LID (FK) BID (FK)
... ...
SELSCT * FROM Land;
Nun kannst Du immer abhängig von dem Parameter wissen was Du suchst.
SELECT * FROM Bundesland WHERE LID = Param; unsw.
Sind die Attribute Deiner Länder, Bundesländer und Städte sehr ähnlich
kannst Du mit Nested Sets arbeiten. Die Nachfahren erhältst Du dann
entsprechend indem du nur die Werte selektierst deren lft und rgt Werte
zwischen dem Auswahlknoten stehen.
Solltest Du hingegen die Unsinnige Variante alles auf einer Webseite
ausliefern zu wollen präferieren, so bleibt Dir wohl nichts Anderes
Übrig als alle Länder Bundesländer und Stadte auszulesen. Diese könntest
Du Beispielsweise in ungeordneten Listen ineinanderverschachteln und
dann mit CSS oder Javascript einblenden, sobald eine Auswahl getroffen
wurde.
Lehnhard Lützen
Re: Auswahl mit SELETC
am 05.11.2004 10:15:56 von Nico Haberzettl
Uwe schrieb keinen Nachnamen, aber folgendes:
> Wie kann ich mit Hilfe von SELETC eine abfrage programmieren wie im Beispiel
Ich setze jetzt mal voraus, daß du MySql verwenden willst. Belehr mich,
wenns
Oracle sein sollte ;)
Wenn du wissen willst, wie ein "SELECT" funktioniert:
http://dev.mysql.com/doc/mysql/en/SELECT.html
Oder d.c.d.mysql
> Gezeigt.
> Deutschland ? Sachsen ? Leipzig
> Deutschland ? Sachsen ? Chemnitz
> und so weiter ...
>
> Also zu erst das Land auswählen und dann sollen alle passenden Bundesländer
> zu denn Land angezeigt werden. Wenn man dann das Bundesland aus gewählt hat
> sollen die passenden Stätte angezeigt werden.
Ohne Tabellenstruktur - sprich, ohne zu wissen, woher die Daten kommen
und wie sie aussehen - kann dir hier wohl keiner weiterhelfen.
Gegenfrage: Wann liefert mein Händler mein neues Auto? (Wenn du jetzt
antwortest: "Weiß ich doch nicht.", bist du genauso schlau wie wir in
Bezug auf deine Frage...)
Drück dich bissl deutlicher aus bidde.
mfg
Nico Haberzettl
--
adbu.de | AdressenKontakteNews | Ihr Infoportal
Re: Auswahl mit SELETC
am 05.11.2004 11:23:26 von Michael Rittweger
Hallo, Uwe!
> Also zu erst das Land auswählen und dann sollen alle passenden
> Bundesländer
> zu denn Land angezeigt werden. Wenn man dann das Bundesland aus gewählt
> hat
> sollen die passenden Stätte angezeigt werden.
Sowas in der Art vielleicht?
(Zwischen jedem *id und dazu passendem *ref besteht eine 1:n Beziehung. *id
sind Primärschlüssel, für die ich gerne den autowert/zufall benutze, *ref
sind dann einfache integer.)
SELECT landid,landname
FROM laender
ORDER BY landname;
--> Du erhältst alle Länder.
--> Land auswählen, dann hast Du die ID eines Landes.
SELECT bundeslandid,landref,bundeslandname
FROM bundeslaender
WHERE landref=landid
^^^^^^ Parameter aus voriger Abfrage
ORDER BY bundeslandname;
--> Du erhältst alle Bundesländer eines Landes.
--> Bundesland auswählen, dann hast Du die ID eines Bundeslandes.
SELECT stadtid,bundeslandref,stadtname
FROM staedte
WHERE bundeslandref=bundeslandid
^^^^^^^^^^^^ Parameter aus voriger Abfrage
ORDER BY stadtname;
--> Du erhältst alle Städte eines Bundeslandes.
--> Stadt auswählen, dann hast Du die ID einer Stadt.
Und das Ganze ließe sich auch in einer "großen" Abfrage zusammenklatschen:
SELECT
laender.landid,
laender.landname,
bundeslaender.bundeslandid,
bundeslaender.landref,
bundeslaender.bundeslandname,
staedte.stadtid,
staedte.bundeslandref,
staedte.stadtname
FROM
(laender
INNER JOIN bundeslaender
ON laender.landid=bundeslaender.landref)
INNER JOIN staedte
ON bundeslaender.bundeslandid=staedte.bundeslandref
ORDER BY staedte.stadtname;
So hat's mir eben mein MS-Access 97 in der SQL-Ansicht ausgeworfen, nachdem
ich auf die Schnelle die Tabellen erstellt und die Beziehungen gesetzt habe.
Damit kriegt Du zu jeder Stadt das dazu passende Bundesland und Land gleich
mitgeliefert.
Je nachdem, wofür Du es brauchst...
Letzteres wäre eher für eine Liste, eine Gesamtübersicht. Hast Du die ID
einer ausgewählten Stadt in stadtref gespeichert, kannst Du mit einem
WHERE stadtid=stadtref
aber natürlich auch die "übergeordneten" Informationen einer Stadt gezielt
abrufen.
Die ersten 3 Queries könntest Du in z.B. ComboBoxen benutzen, wovon ich
ausgehe, daß Du das meintest.
Gruß, Michael