SQL en 3 Tabellen
Ik heb niet echt veel ervaring met SQL, dus misschien dat iemand mij kan helpen?
Wat ik nu heb is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
Users.name,
Users.birth_date,
COUNT(Files.user_id) AS files,
MAX(Logins.date) AS last
FROM
Users,
Files,
Logins
WHERE
Users.id = 1
AND Files.user_id = 1
AND Logins.user_id = 1
Users.name,
Users.birth_date,
COUNT(Files.user_id) AS files,
MAX(Logins.date) AS last
FROM
Users,
Files,
Logins
WHERE
Users.id = 1
AND Files.user_id = 1
AND Logins.user_id = 1
Ik snap dat alles achter de WHERE fout is, maar ik heb geen idee hoe het dan moet. Dit is de error:
#1140 - Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Voor als het niet helemaal duidelijk is:
Ik wil dus...
- ...uit de tabel Users de 'name' en 'birth_date' weten
- ...uit de tabel Files weten hoeveel rows er voor die gebruiker zijn
- ...uit de tabel Logins weten wanneer de laatste regel was voor die gebruiker
Volgens mij moet ik gebruik maken van een INNER JOIN, maar omdat het over 3 tabellen gaat heb ik geen idee.. Iemand tips?
Alvast bedankt!
Daan
Edit:
Wat voel ik me stom, zech..
'k ben de FROM vergeten.
ff kijken of het dan wel werkt
Wat voel ik me stom, zech..
'k ben de FROM vergeten.
ff kijken of het dan wel werkt
Edit:
De query veranderd en de error die ik krijg.
Hij werkt dus nog steeds niet.. :s
De query veranderd en de error die ik krijg.
Hij werkt dus nog steeds niet.. :s
Gewijzigd op 01/01/1970 01:00:00 door Daan
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
Users.name,
Users.birth_date,
COUNT(Files.user_id) AS files,
MAX(Logins.date) AS last
FROM
Users,
Files,
Logins
GROUP BY
Users.name,
Users.birth_date,
Files.user_id,
Logins.date,
Users.id,
Logins.user_id
HAVING
Users.id = 1
AND Files.user_id = 1
AND Logins.user_id = 1
Users.name,
Users.birth_date,
COUNT(Files.user_id) AS files,
MAX(Logins.date) AS last
FROM
Users,
Files,
Logins
GROUP BY
Users.name,
Users.birth_date,
Files.user_id,
Logins.date,
Users.id,
Logins.user_id
HAVING
Users.id = 1
AND Files.user_id = 1
AND Logins.user_id = 1
Zoiets?
Maar ik weet zeker dat Files.user_id bestaat, want dit doet hij wel goed:
SELECT user_id FROM Files
Volgens mij doet hij het ook niet met een JOIN, omdat de waarden niks met elkaar te maken hebben. Er moet gewoon één waarde uit komen, dus misschien dat het handiger is om 3 query's te maken?
Ok sorry..
Snap je een join wel dan, de waardes hebben volgens jou query namelijk wel degelijk met elkaar te maken!!
HAVING
Users.id = 1
AND Files.user_id = 1
AND Logins.user_id = 1
Het id uit Users, moet overeenkomen me zowel de user_id uit Files als uit Login, dat is precies waarvoor een join heel geschikt is