Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]3372[/thread]

Abfrage über zwei Tabellen mit 1:n Beziehung



<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
Ronnie
 2003-11-07 14:55
#35677 #35677
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe das Problem das ich zwei Tabellen habe, die in einer 1:n Beziehung stehen:

Unternehmen Kunde -> Ansprechpartner

in einem Suchdialog soll nach Feldern aus beiden Tabellen gesucht werden können.

Suchdialog:
| Dropdownlist v|-| Eingabefeld |-| Suchen-Button |

Meine Überlegung ab hier, ist es nach den beiden Primärschlüsseln der Tabellen zu suchen. Wird nach einer Firma gesucht erhalte ich die IDs der in Frage kommenden Firmen und die IDs aller Ansprechpartner in diesen Unternehmen. Selbiges müsste genauso funktionieren wenn ich nach einem Ansprechpartner suche.

im nächsten Schritt stelle ich mir vor, die IDs in einen Hash zu stecken, da die Unternehmens-IDs mehrfach vorkommen aufgrund der ID-Paare beider Tabellen. Die IDs der Unternehmen werden also die Keys des Hash und die IDs der Ansprechpartner in diesen Unternehmen kommen in einen anonymes Array, das als Value des Hashes dient.

Die Ausgabe erfolgt dann als verschachtelte Tabelle:

+ Unternehmen 1
 - Ansprechpartner 1
 - Ansprechpartner 2
+ Unternehmen 2
 - Ansprechpartner 3

Ist diese Herangehensweise sinnvoll, oder ist ein anderer Weg empfehlenswerter?

Gruss,
Ronnie\n\n

<!--EDIT|Ronnie|1068209746-->
format_c
 2003-11-07 15:27
#35678 #35678
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich erlaube mir mal einige konkretere Aussagen einzuhohlen.
Wie sehen grob die Tabellen aus?
welche Spalten von welchen Tabellen willst du haben?
was soll das Kriterien der abfrage sein?
Welche Relationen bestehen zwischen den Tabellen?

Gruß Alex\n\n

<!--EDIT|format_c|1068211722-->
Ronnie
 2003-11-07 15:59
#35679 #35679
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Tabelle Unternehmen:
UID - Primärschlüssel, auto-inkrement,
Firmenname,
Ort,
PLZ,
usw.

Tabelle Ansprechpartner:
CID - Primärschlüssel, auto-inkrement,
UID - Fremdschlüssel (Tabelle Unternehmen)
Nachame,
Vorname,
usw.

Es handelt sich also um eine klassische 1:n Beziehung. In jedem Unternehmen können mehrere Ansprechpartner existieren.

Es können alle Spalten, per Dropdownlist, als Suchkriterium gewählt werden. Ausgegeben werden sollen die Daten wie in obigerem Schema (1.Post unten).\n\n

<!--EDIT|Ronnie|1068213667-->
jan10001
 2003-11-07 23:46
#35680 #35680
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Arbeitest du mit MySQL?
Ronnie
 2003-11-08 00:18
#35681 #35681
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,07.11.2003, 22:46]Arbeitest du mit MySQL?[/quote]
Ja!
jan10001
 2003-11-08 01:41
#35682 #35682
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Dann verwende doch "select distinct" bei der Abfrage.
Ronnie
 2003-11-09 14:40
#35683 #35683
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,08.11.2003, 00:41]Dann verwende doch "select distinct" bei der Abfrage.[/quote]
Hmm, habe mal probiert aber das löst mein Problem nicht. Habe aber festgestellt das ich einen LEFT-JOIN verwenden muss, da ich ja alle Eintäge in 'Unternehmen' sehen möchte, auch wenn noch kein Ansprechpartner angelegt ist.
jan10001
 2003-11-09 14:57
#35684 #35684
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Genau genommen verstehe ich dein Problem nicht? Wenn es für eine Firma keinen Ansprechpartner gibt, kann man den auch nicht suchen oder? Eigentlich reicht es zwei Abfragen zu definieren:
1. Firma bekannt -> Ansprechpartner wird gesucht
2. Ansprechpartner bekannt -> Firmen werden gesucht
Ronnie
 2003-11-09 16:08
#35685 #35685
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
[quote=jan10001,09.11.2003, 13:57]Genau genommen verstehe ich dein Problem nicht?[/quote]
Das Problem ist, das in einem Suchdialog nach Feldern aus zwei Tabellen gesucht werden kann, die in einer 1:n bzw. 0:n Beziehung stehen. Du kannst so z.B. alle Ansprechpartner suchen die 'Müller' heissen unabhängig von dem Unternehmen in dem diese sich befinden oder du suchst nach einem Kunden z.B. 'Regierungspräsidium' und erhältst dann alle Unternehmen auf die das zutrifft sowie alle Ansprechpartner in diesen Unternehmen.
Ich glaube das es so funktionieren kann wie ich es oben beschreiben habe, nur das in diesem Fall keine Sortierung möglich ist.\n\n

<!--EDIT|Ronnie|1068386957-->
jan10001
 2003-11-09 17:34
#35686 #35686
User since
2003-08-14
962 Artikel
BenutzerIn
[default_avatar]
Quote
Das Problem ist, das in einem Suchdialog nach Feldern aus zwei Tabellen gesucht werden kann, die in einer 1:n bzw. 0:n Beziehung stehen. Du kannst so z.B. alle Ansprechpartner suchen die 'Müller' heissen unabhängig von dem Unternehmen in dem diese sich befinden oder du suchst nach einem Kunden z.B. 'Regierungspräsidium' und erhältst dann alle Unternehmen auf die das zutrifft sowie alle Ansprechpartner in diesen Unternehmen.
Ich glaube das es so funktionieren kann wie ich es oben beschreiben habe, nur das in diesem Fall keine Sortierung möglich ist.
Was spricht dagegen den Suchdialog zu erweitern und den User angeben zu lassen was er sucht?
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2003-11-07 14:55.