Tabel:
id | user_id | var_id
1 1 2
2 2 9
3 1 3
4 1 3

Je ziet dat UserID 3 rows heeft,
2 keer met varid3 en 1 keer met var_id 2.

UserID 2 zelf heeft maar 1 row waarvan varid 9 is.

nu zou de qry het volgende moeten doen.
Hij moet bij de desbetreffende user (bij deze nemen we userid 1) kijken en optellen hoeveel verschillende varid's hij heeft.

als de qry uitgevoerd zou worden komen we dit uit:
userid 1 = 2 (aangezien hij 3 en 2 heeft. Dat hij varid 3 2 keer heeft maakt niet uit.

Iemand een id hoe de qry er uit zou moeten zien?

Note: de waarde van varid kan van 1 tot en met 500 gaan.
UserID 3 komt niet voor in de voorbeeld, alleen nummers 1 en 2.

Kortom, zorg voor een beter voorbeeld, nu kunnen we alleen maar raden wat de bedoeling is.

Tip: Gooi de kolom id weg, die heb je niet nodig.
Er zijn 4 rows, dus dat hele voorbeeld eugt nu al niet :S

SELECT
  user_id,
  COUNT(DISTINCT(var_id)) AS aantal
FROM
  tabel
GROUP BY
  user_id

Dit is waarschijnlijk de query die je zoekt. Je moet je alleen afvragen hoe het kan dat data dubbel in je tabel kan komen te staan? Zoals ik het nu ziet zijn de records met id 3 en 4 identiek aan elkaar (op het id na dan), en kan bijna niet kloppen...

Dat je in je query DISTINCT moet gebruiken is ook vaak al een voorteken van een incorrect datamodel. Iets om dus zeker even aandacht aan te besteden...
userid kunnen glijk welk nummer zijn.

kolom id heb ik voor andere toepassingen nodig.

Huidig voorbeeld (row namen gewijzigd, moest ik nog doen)
http://img171.imageshack.us/img171/9396/examplenr3.jpg

Als de php file met de betreffende bovenstaande gegevens zou gerunt worden en het is userID 1 dan zou de uitkomst het volgende zijn: 5
Want hij heeft slechts 5 unieke nummers: 150, 4, 151, 1, 7
Moest userID 2 de pagina runnen zou de uitkomst slechts 1 zijn.
Want hij heeft maar 1 unieke row. (namelijk 1)

Die waarde (bij userID 1 dus 5) die door de SQL (wat ik dus wil weten) zal 'opgeslagen' worden als $totalu

$totalu = ....

hopelijk heb je hier meer aan.
als je nog iets nodig hebt pls tell.
@Blanche: ik zag je post pas na mijn bovenstaande post.
Ik ga hem even uitproberen.
Dat je meerdere dezelfde varid's hebt is in dit gebeuren wel van toepassing.

Het is een vreemde tabel. Maar het werkt tot nu toe ^^.
this moeilijk uit te leggen als je half nederlands en half engels kan. (geen moedertaal -_-)
pas maar op voor frank dit ziet..
Chaser? Een datum/tijd sla je toch altijd op als datum/tijd niet als een aantal cijfers waar niemand een touw aan vast kan knopen?
Djemo schreef op 15.04.2008 15:07
Chaser? Een datum/tijd sla je toch altijd op als datum/tijd niet als een aantal cijfers waar niemand een touw aan vast kan knopen?


Het is een timestamp.

@blance: wat moet ik in de plaats van "aantal" zetten?
Het is een drama.

Edit: Of gebruik je een echte database? En geen MySQL met z'n rottige timestamps met bijbehorende bugs/"functionaliteiten" ?
Ik gebruik gewoon Mysql. 'addtime' is bij mijn vraag niet belangrijk.
Timestamp bied bepaalde functies die ik bij andere toepassingen nodig heb.

Edit: QRY gevonden.

Vraag beantwoord
@blach: na aanpassing van je sql werkt het. Dank je.
Antwoord:
SELECT COUNT(DISTINCT(varid)) FROM *table* WHERE user_id='{$user['id']}

Reageren