Jump to content
powie.de Tech Forum
Sign in to follow this  
roli

Zwei rows im gleichen statement auslesen

Recommended Posts

Hallo zusammen


ich habe eine Frage:

Ich habe zwei Tabellen "USERS" und "CONTACT".


Die USER tabelle sieht so aus

 

USER_ID | NAME | VORNAME
1 | Müller | Rudolf
2 | Schwager | Jürg

 


Die CONTACT tabelle sieht so aus

 

USER_ID | FIELD_DESC | FIELD_VALUE
1 | Phone1 | 1234567
1 | Phone2 | 0987654
2 | Phone1 | 5678944
2 | Phone2 | 3647594

 

Nun möchte ich die Ausgabe wie folgt gestalten


Name | Vorname | Phone 1 | Phone 2


wie schreibe ich nun das select statement, dass ich quasi zwei rows im gleichen SQL statement abarbeiten kann.


Select


A.Name as Name ,A.Vorname as Vorname, B.FIELD_VALUE as PHONE1, B.FIELD_VALUE as PHONE2 from USERS A join CONTACT B on A.USER_ID=B.USER_ID where ....


nun wie definiere ich aber, dass ich unter B.FIELD_VALUE einmal den Wert für Phone 1 bekomme und einmal den Wert für Phone 2 ? Wenn ich eine where klausel mache, klappt dies wenn ich nur eine telnummer definiere, also where B.FIELD_DESC ='Phone1', jedoch bei zwei Zeilen geht dies logischerweise nicht mehr. doch wie kann ich es dann lösen ?


vielen dank für die hilfe

roland

Share this post


Link to post
Share on other sites

Select u.name, u.vorname, a.field_value, b.field_value

From users u

Left Join CONTACT a on a.user_id = u.user_id and a.field_desc = 'Phone1'

Left Join CONTACT b on b.user_id = u.user_id and a.field_desc = 'Phone2'

Share this post


Link to post
Share on other sites

Ähm, wenn man so ein Ergebnis hat - stimmt irgendwas nicht mit dem DB-Design.


Warum gibt es eine Tabelle "Kontakt" - doch nur, wenn ein "Ding" mehrere "Kontakte" hat.

oder....

Wenn sich meherere Dinger einen Kontakt teilen.

In diesem Fall ist aber die Telefonnummer(n) einem bestimmten Ding zugeteilt. Aus diesem Grund ergibt es keinen Sinn .. eine 1:1 in eine extra Tabelle zu werfen.


Sry, wenn ich ältere Leichen wecken muss - aber wenn man schon anfängt, sich mit DB-design und deren Abfragegestalltung auseinander zu setzen,

dann auch gleich richtig. Also wenigstens bis zur 3.NF sollte eine DB schon erstellt werden - alles darüber ist IMO wissenschaftliche Krümelkacke.



lG Henrik

Share this post


Link to post
Share on other sites
Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×