sorteer vraag
Het gaat om de code die ik eerder vandaag heb gepost
Gewijzigd op 01/01/1970 01:00:00 door JSP
Wat je nu met die laatste query doet is het ophalen van de gegevens van 1 persoon, dan komt door die WHERE clause die je erin hebt staan.
Je hebt wel de beschikking over alle id's van de vrieden, dus wat je zou kunnen doen is de volgende query gebruiken:
Hierbij is '1, 2, 10, 12' even een voorbeeldje, maar dit is het formaat dat je moet gebruiken om op deze manier alle id's achter elkaar te zetten.
Dit laatste is vrij eenvoudig in php wel te bereiken. Dus zorg dat je een variabele aanmaakt waarbij alle id's van de weer te geven vrienden in bovenstaand formaat staan.
ps. Als je dit hele verhaal in 1 query wilt hebben, zou je in de friends tabel nog een aparte kolom op moeten nemen waarin je aangeeft of de uitnodiging geaccepteerd is.
Dus:
friends
--------
id
member_id
friend_id
accepted (1 of 0, tinyint)
Vervolgens denk ik dat deze query wel zou moeten werken:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
SELECT m.*
FROM
members m,
friends f
WHERE m.id = f.friend_id
AND f.accepted = 1
AND f.member_id = [id]
ORDER BY m.visit DESC
FROM
members m,
friends f
WHERE m.id = f.friend_id
AND f.accepted = 1
AND f.member_id = [id]
ORDER BY m.visit DESC
Hierbij stelt [id] het id van de betreffende member voor waarvan je alle vrienden op wilt halen.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche schreef op 05.06.2007 00:29:
Je hebt wel de beschikking over alle id's van de vrieden, dus wat je zou kunnen doen is de volgende query gebruiken:
Hierbij is '1, 2, 10, 12' even een voorbeeldje, maar dit is het formaat dat je moet gebruiken om op deze manier alle id's achter elkaar te zetten.
Je hebt wel de beschikking over alle id's van de vrieden, dus wat je zou kunnen doen is de volgende query gebruiken:
Hierbij is '1, 2, 10, 12' even een voorbeeldje, maar dit is het formaat dat je moet gebruiken om op deze manier alle id's achter elkaar te zetten.
dit heb ik geprobeerd alleen blijft alles hetzelfde, ik kan overigens ook maar
één variabele invullen.., hierbij weet ik niet of dit is wat je bedoelde?
Blanche schreef op 05.06.2007 00:29:
Misschien stom vraagje, maar
waar staan die "m" en "f" eigenlijks voor?
Gewijzigd op 01/01/1970 01:00:00 door JSP
[id], [id], [id], etc...
Als je alle id's in dit formaat in een variabele hebt staan, kun je uiteindelijk deze variabele opnemen in je IN gedeelte van je query.
Quote:
waar staan die "m" en "f" eigenlijks voor?
Dat zijn aliasses zodat ik niet elke keer de hele tabelnaam uit hoef te schrijven. Je had ook kunnen schrijven:
Ja sorry heb er nog niet zoveel verstand van.
Je hebt nu de laatste twee queries in een while loop staan. Dat zul je als eerste aan moeten passen aangezien je (in ieder geval) die laatste query maar 1x uit wilt voeren.
Na het checken van de friends houdt je dus een reeks met id's over van geaccepteerde vrienden. Als je deze id's nou eerst eens allemaal opneemt in een array door ze na het checken direct aan die array toe te voegen.
Vervolgens kun je met een foreach loop die array wel doorlopen en de id's in het juiste formaat zetten.
Echter, heb je ook al gekeken naar de andere oplossing die ik aandroeg: een kolom accepted opnemen in je friends tabel? In totaal scheelt je dat namelijk 2 queries en een hoop regels code.
Ja daar ben ik op het moment mee aan het vechten lukt nog niet helemaal...
Waar zit je op dit moment en waar loop je dan vast?
Code (php)
1
2
3
2
3
could not run (SELECT member_id.* FROM members AS member_id, friends
AS friend_id WHERE member_id.memberid = friend_id.friend_id AND friend_id.accept = 1 AND friend_id.member_id = [memberid] ORDER BY
member_id.visit DESC).: You have an error in your SQL syntax near '[memberid] ORDER BY member_id.visit DESC' at line 5
AS friend_id WHERE member_id.memberid = friend_id.friend_id AND friend_id.accept = 1 AND friend_id.member_id = [memberid] ORDER BY
member_id.visit DESC).: You have an error in your SQL syntax near '[memberid] ORDER BY member_id.visit DESC' at line 5
ik weet ook niet of ik dit nou wel goed heb?:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT member_id.*
FROM members AS member_id, friends AS friend_id
WHERE member_id.memberid = friend_id.friend_id
AND friend_id.accepted = 1
AND friend_id.member_id = [memberid]
ORDER BY member_id.visit DESC
FROM members AS member_id, friends AS friend_id
WHERE member_id.memberid = friend_id.friend_id
AND friend_id.accepted = 1
AND friend_id.member_id = [memberid]
ORDER BY member_id.visit DESC
de friends tabel ziet er zo uit
friends
--------
id
member_id
friend_id
accepted
date
en de members tabel zo:
members
---------
memberid
visit
etc.
etc.
etc.
Gewijzigd op 01/01/1970 01:00:00 door JSP
Een alias is niets meer dan een andere, vaak kortere, aanduiding voor je tabel zodat je niet de hele tabelnaam hoeft aan te geven. Het is dus logisch om bijvoorbeeld 'members AS m' te gebruiken.
Verder gaat je query natuurlijk de fout in omdat je '[memberid]' erin hebt staan. Daar moet natuurlijk wel een variabele komen uit je php script...
Verder zou het dan volgens mij goed moeten gaan.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT m.*
FROM members AS m, friends AS f
WHERE m.memberid = f.friend_id
AND f.accepted = 1
AND f.member_id = [$memberid]
ORDER BY m.visit DESC";
FROM members AS m, friends AS f
WHERE m.memberid = f.friend_id
AND f.accepted = 1
AND f.member_id = [$memberid]
ORDER BY m.visit DESC";
en geeft nou de volgende sql error aan:
Kijk anders ook nog eens naar het voorbeeld dat ik gister al gaf...
het werkt idd geweldig.
Nou de rest nog even aanpassen.
maar met deze query shild het me ook de helft aan regels in
mijn tabel.
Ik zal nog even kijken wat hij allemaal precies doet in deze query
dat heb ik nog niet helemaal door maar dat ga ik vast snappen
again thnx
Quote:
Oh maar dan ga je straks wel de fout in denk ik...maar met deze query shild het me ook de helft aan regels in
mijn tabel.
mijn tabel.
Je moet namelijk, zodra iemand een vriendschap geaccepteerd heeft, ook een record van die persoon opnemen. Per vriendschap moet je altijd 2 records in 1 tabel hebben anders kun je namelijk nooit controleren welke vrienden die tweede persoon allemaal heeft.
En maak je maar niet druk over het aantal records in een tabel. Een database is prima in staat om tabellen met miljoenen records te bevatten.
Ja, ik zag het net ja dat dat niet goed gaat komen. denk soms wat te makkelijk.