Error bij GROUP BY
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
<?php
mysql_query("
SELECT
a.id,
p.picture,
a.dir,
p.albumid
FROM
picalbum AS a,
pictures AS p
WHERE
p.albumid = a.id
ORDER BY
p.adddate
GROUP BY
p.albumid
LIMIT
0,6
");
?>
mysql_query("
SELECT
a.id,
p.picture,
a.dir,
p.albumid
FROM
picalbum AS a,
pictures AS p
WHERE
p.albumid = a.id
ORDER BY
p.adddate
GROUP BY
p.albumid
LIMIT
0,6
");
?>
Waarom gaat dit niet goed en geeft die:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY p.albumid'
Je maakt een groep aan, p.albumid en je wilt van 1 record in deze groep het id, de picture en de dir opvragen? De dir (directory?) kan ik me nog iets bij voorstellen, alle foto's zullen ongetwijfeld in dezelfde directory staan en dus hebben alle records in deze group deze eigenschap, maar de rest lijkt mij onmogelijk. MySQL verzint bij ongeldige GROUP BY-queries zelf wel een resultaat, maar dat wil je echt niet. Je kunt de meest vreemde resultaten krijgen.
Overigens zit jouw probleem volgens mij in de volgorde van de statements, ORDER BY hoort bij mijn weten ergens achteraan te staan.
Frank schreef op 25.01.2007 16:34:
Naar mijn bescheiden mening slaat de hele query nergens op...
Je maakt een groep aan, p.albumid en je wilt van 1 record in deze groep het id, de picture en de dir opvragen? De dir (directory?) kan ik me nog iets bij voorstellen, alle foto's zullen ongetwijfeld in dezelfde directory staan en dus hebben alle records in deze group deze eigenschap, maar de rest lijkt mij onmogelijk. MySQL verzint bij ongeldige GROUP BY-queries zelf wel een resultaat, maar dat wil je echt niet. Je kunt de meest vreemde resultaten krijgen.
Overigens zit jouw probleem volgens mij in de volgorde van de statements, ORDER BY hoort bij mijn weten ergens achteraan te staan.
Je maakt een groep aan, p.albumid en je wilt van 1 record in deze groep het id, de picture en de dir opvragen? De dir (directory?) kan ik me nog iets bij voorstellen, alle foto's zullen ongetwijfeld in dezelfde directory staan en dus hebben alle records in deze group deze eigenschap, maar de rest lijkt mij onmogelijk. MySQL verzint bij ongeldige GROUP BY-queries zelf wel een resultaat, maar dat wil je echt niet. Je kunt de meest vreemde resultaten krijgen.
Overigens zit jouw probleem volgens mij in de volgorde van de statements, ORDER BY hoort bij mijn weten ergens achteraan te staan.
Die volgorde veranderen had ik al geprobeerd, zonder resultaat, maar ik zal de bedoeling even uitleggen.
Ik heb een tabel met foto's die aan een bepaald album zijn gekoppeld. Ik wil van deze albums de meest recente foto hebben, dus eigenlijk de 6 albums waarin het laatst een foto is toegevoegd, met de bijbehorende foto (ik laat ze al wel verkleinen via een script).
Hopelijk is dat wel duidelijk.
Edit:
Dus inderdaad maak ik een groep aan waaruit ik 1 record weer wil geven, die met de nieuwste datum en tijd.
Dus inderdaad maak ik een groep aan waaruit ik 1 record weer wil geven, die met de nieuwste datum en tijd.
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Gebruik 2 queries.
Frank schreef op 25.01.2007 16:54:
Helemaal duidelijk! Dit kan dus niet met een GROUP BY.
Gebruik 2 queries.
Gebruik 2 queries.
Hmm Jammer dat dit niet kan in in query. Maar dan ga ik wel met 2 query's werken.
Edit:
Ik bedenk me net dat het prima moet kunnen, ik kan toch een distinct gebruiken, op de kolom Albumid in de afbeeldingen tabel, en daarbij dan de hoogste datum gebruiken. Ik ga nog even prutsen.
Toch bedankt voor het meedenken.
Ik bedenk me net dat het prima moet kunnen, ik kan toch een distinct gebruiken, op de kolom Albumid in de afbeeldingen tabel, en daarbij dan de hoogste datum gebruiken. Ik ga nog even prutsen.
Toch bedankt voor het meedenken.
Edit:
En nog weer 1, ik denk er niet eens bij na dat ik ook de map voor die foto nodig heb om hem weer te geven :S
En nog weer 1, ik denk er niet eens bij na dat ik ook de map voor die foto nodig heb om hem weer te geven :S
Gewijzigd op 01/01/1970 01:00:00 door Robert Deiman
Is het niet een idee om in dit geval in de albums tabel ook een kolom 'modified' op te nemen waarin je het tijdstip van laatste wijziging opslaat? Dan kun je daarop sorteren.
Je pakt dan degene met een lege einddatum.
Bij een nieuwe foto plaats je een einddatum in het id wat voor het plaatsen de hoogste is.
Let op dit moet wel met rollback mogelijkheid anders mogelijk corrupte data
NEej, dat wil niet Klaasjan, of ik moet 2 keer een datum opslaan in de kolom dvoor de datum. De datum is wel van belang voor het footoalbum. Ik heb hetal opgelost met 2 query's.