roli 0 Posted February 10, 2010 Share Posted February 10, 2010 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 Quote Link to post Share on other sites
Powie 1 Posted February 10, 2010 Share Posted February 10, 2010 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' Quote Link to post Share on other sites
roli 0 Posted February 10, 2010 Author Share Posted February 10, 2010 Vielen Dank Powie, klappt bestens! Quote Link to post Share on other sites
raiser 0 Posted February 17, 2010 Share Posted February 17, 2010 Ä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 Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.