[Gelöst bzw. verworfen] mySQL Abfrage über zwei Tabellen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

[Gelöst bzw. verworfen] mySQL Abfrage über zwei Tabellen

Beitrag von bgx »

Hmm ich komm einfach nicht drauf. Ich habe zwei Tabellen:

1.
user_id | username | user_birthday | userlevel
1 | Gerd | 14357 | 0

2.
user_id | usercars_carname | usercars_birthday
1 | Fastlane | 17436

nun möchte ich aus beiden ein Ergebniss erstellen, das Alphabetisch nach username bzw. usercarsname sortiert ist und zwar nur wenn birthday <> 999999

Also als ergebniss dann:

user_id | username | user_birthday | userlevel | usercars_carname | usercars_birthday
1 | NULL | NULL | NULL | Fastlane | 17436
1 | Gerd | 14357 | 0 | NULL | NULL

wie stelle ich das an?
Zuletzt geändert von bgx am 26.02.2007 23:39, insgesamt 1-mal geändert.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Code: Alles auswählen

SELECT u.user_id,  u.username, u.user_birthday, u.userlevel, c.usercars_carname, c.usercars_birthday FROM tabelle_1 u, tabelle_2 c WHERE u.user_id = c.user_id AND u.user_birthday <> 99999 ORDERY BY u.username, c.usercars_name;
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

Dank Dir Miriam!

So ähnlich hatte ich es zuerst auch:

Code: Alles auswählen

SELECT u.user_id, u.username, u.user_birthday, u.user_level, h.usercars_carname, h.usercars_birthday FROM phpbb_users u, phpbb_usercars h WHERE u.user_birthday <> 999999 AND u.user_active=1 AND h.usercars_birthday <> 999999 ORDER BY u.username, h.usercars_carname
Leider schreibt er mir dann kein Null sondern gibt als Ergebnis das aus:

Code: Alles auswählen

user_id  username  user_birthday  user_level  usercars_carname  usercars_birthday  
498 -Nadine- 4485 0 Wendy 12840 
498 -Nadine- 4485 0 ´Wendy 4632 
88 achimtun -5406 0 Wendy 12840 
88 achimtun -5406 0 ´Wendy 4632 
166 ADI -800 0 Wendy 12840 
166 ADI -800 0 ´Wendy 4632 

Mit der Abfrage von dir:

Code: Alles auswählen

SELECT u.user_id, u.username, u.user_birthday, u.user_level, h.usercars_carname, h.usercars_birthday FROM phpbb_users u, phpbb_usercars h WHERE u.user_id = h.user_id AND u.user_birthday <> 999999 AND u.user_active=1 AND h.usercars_birthday <> 999999 ORDER BY u.username, h.usercars_carname
bekomme ich als Ergebnis nur:

Code: Alles auswählen

user_id  username  user_birthday  user_level  usercars_carname  usercars_birthday  
3 alphadog 4632 1 ´Wendy 4632 
2 bgx 3787 1 Wendy 12840 
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Das, was du tun willst, hat imho nichts mit dem Verbinden von zwei Tabellen zu tun, da die Datensätze ja gar nicht miteinander verbunden werden. Warum willst du denn das ganze mit NULL-Feldern ausgeben lassen? Damit ein Benutzer mehrere Autos haben kann?

Wenn ja:

Code: Alles auswählen

SELECT u.user_id, u.username, u.user_birthday, u.user_level, h.usercars_carname, h.usercars_birthday
FROM phpbb_users u
INNER JOIN phpbb_usercars h
  ON h.usercars_birthday <> 999999
WHERE u.user_birthday <> 999999
  AND u.user_active=1
ORDER BY u.username, h.usercars_carname 
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

Dank Dir S2B aber leider bekomme ich als Ergebnis dann:

Code: Alles auswählen

user_id  username  user_birthday  user_level  usercars_carname  usercars_birthday  
498 -Nadine- 4485 0 Wendy 12840 
498 -Nadine- 4485 0 ´Wendy 4632 
88 achimtun -5406 0 Wendy 12840 
88 achimtun -5406 0 ´Wendy 4632 
166 ADI -800 0 Wendy 12840 
166 ADI -800 0 ´Wendy 4632 
... was leider auch nicht stimmt.

Der Grund, warum ich es so haben will ist, das ich den Birthday Mod schon am laufen habe und ich nun über den usercarsmod zusätzliche geburtstage pro mitglied habe, die ich gerne in den Birthdaymod integrieren möchte. (Ich weiß das es schwierig ist und das es schon ein paar andere versucht haben, aber man kanns ja mal versuchen. Interesse wenn es klappt ist sicherlich da. ;-) )

Ich habe jetzt das versucht:

Code: Alles auswählen

SELECT phpbb_users.user_id, phpbb_users.username as 'name', phpbb_users.user_birthday as 'birthday', phpbb_users.user_level, phpbb_usercars.usercars_carname as 'name', phpbb_usercars.usercars_birthday as 'birthday' FROM phpbb_users left join phpbb_usercars on (phpbb_usercars.user_id=phpbb_users.user_id) WHERE phpbb_users.user_birthday <> 999999 AND phpbb_users.user_active=1 ORDER BY 'name'
Das sieht schon mal nicht schlecht aus:

Code: Alles auswählen

user_id  name  birthday  user_level  name  birthday  
498 -Nadine- 4485 0 NULL NULL 
88 achimtun -5406 0 NULL NULL 
166 ADI -800 0 NULL NULL 
3 alphadog 4632 1 ´Wendy 4632 
32 AmBullDusty 2463 2 NULL NULL 
2 bgx 3787 1 Wendy 12840 
ist aber immer noch nicht ganz das was ich brauche.
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Aber was stört dich denn an den zusätzlichen Daten? Du musst sie ja nicht verwenden...
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

:lol: da hast du recht, aber ich hätte es halt gern komplett alphabetisch gehabt.

So hab ich ja nachher als Ergebnis:
ADI (25), Alphadog (23), Wendy (5), AmBullDusty (24), ....

hätte es gern so gehabt:
ADI (25), Alphadog (23), AmBullDusty (24), Wendy (5), ....

Man das ist auch nicht grad leicht mehrere Geburtstage pro User über den Birthdaymod laufen zu lassen :roll:
Benutzeravatar
bgx
Mitglied
Beiträge: 228
Registriert: 30.11.2005 22:32
Kontaktdaten:

Beitrag von bgx »

Hmm es klappt wohl nicht, so wie ich mir das Vorgestellt habe. Deshalb habe ich es jetzt mit zwei Abfragen gelöst. Da die Geburtstagsabfrage bei mir eh gecacht wird, ist das imo nicht so schlimm.

Danke nochmal für die Hilfe bis hier hin. Ich bin auf einem Guten Weg, das ich es hin bekomme.

:wink:
Antworten

Zurück zu „Coding & Technik“