buddy system

mcnewbie

mcnewbie

Aktives Mitglied
Thread Starter
Dabei seit
09.08.2004
Beiträge
1.236
Reaktionspunkte
5
hallo leute,

hab grad ein massives denkproblem. wir programmiern da gerade an einem buddy system für eine applikation.

mir gehts jetz darum, dass ich rausfinde welcher user wen als buddy hat und wie der user buddies hinzufügen kann.

ich hab jetz mal 2 tabellen:

1. user - uid | username | bla | bla
2. buddies - uid | bid

in der 2. hätt ich halt die user id und als bid die use id des users, den user X als buddy hat


gut jetz ahb ich da zB in tabelle 2

1 | 2
1 | 2
2 | 5
2 | 7

alles fein soweit

jetz will ich einen query der mir alle usernamen der buddies von user '1' gibt.... ich bin gerade zu doof und komm nciht drauf, bin für hilfe dankbar!!

cheers
 
SELECT bid FROM tabelle WHERE id = 2;

?
Oder hab ich dich falsch verstanden
 
ja scho, aba die id is ne zahl udn ih will den nahmen *grübel*
 
du machst dann einfach in einer schleife eine abfrage mit dem result der ersten abfrage mit jeweils

SELECT username FROM user WHERE id=result;

--> in der schleife
 
hm ja das wäre ein idee... ein einem query gehts ned oda?
 
oja mit Joins, aber da musst du auf die antwort eines anderen warten aber irgendwie so:

SELECT id, bid, username FROM user,buddies WHERE id = 2;

aber für sowas hast du glaube ich eine falsche datenstruktur

aber such mal nach joins bzw semi joints
 
Zuletzt bearbeitet:
Es muss heissen joins und genau damit geht es!

Code:
 SELECT bid, username FROM user,buddies WHERE id = 2 and buddies.uid=user.uid
 
danke dir ... gibts irgendwo ne kleine site über joins wo diese gut erklärt sind ?
 
PowerBookGrafik schrieb:
danke dir ... gibts irgendwo ne kleine site über joins wo diese gut erklärt sind ?

ja, mysql.com

Ich würde allerdings zu "LEFT JOIN" tendieren, da das weniger aufwendig als ein einfacher JOIN ist. Das würde dann so aussehen:
Code:
SELECT `t2`.* FROM buddies AS `t1` LEFT JOIN user AS `t2` ON (`t1`.`bid` = `t2`.`uid`) WHERE (`t1`.`uid` = 2) AND (`t1`.`bid` IS NOT NULL)
Ein LEFT JOIN bearbeitet erst die die Datensätze aus der ersten Tabelle und sucht dann die dazu passenden Datensätze aus der zweiten Tabelle (usw.: können ja auch mehr wie zwei Tabellen sein).
Ein einfacher JOIN dagegen kombiniert erst beide Tabellen und sucht dann in der "erzeugten" Tabelle. Das führt bei großen Tabellen zu einem erheblichen Mehraufwand.

Gunter
 
Gunter schrieb:
Ich würde allerdings zu "LEFT JOIN" tendieren

:jaja: recht Du hast! Ich hab's nicht gemacht, weil ich eher selten mit mysql arbeite und mir nicht sicher war welche Version nun was kann (ich nutze meist MS SQL mit Transact SQL).
 
Zurück
Oben Unten