- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
SELECT news_tbl.*, users_tbl.*,
GROUP_CONCAT(comments_tbl.comments_id) AS commentsid,
GROUP_CONCAT(CONCAT ('<hr><h6>Navn: ', comments_tbl.name,'</h6>','<p>',comments_tbl.comment, '</p>') SEPARATOR '<br><br>') AS comments,
COUNT(comments_tbl.comments_id) AS comments_count
FROM news_tbl
LEFT JOIN comments_tbl ON comments_tbl.news_id = news_tbl.news_id
LEFT JOIN users_tbl ON news_tbl.user = users_tbl.username
GROUP BY news_tbl.news_id
ORDER BY news_tbl.news_id DESC LIMIT 5
Lowezar 15.12.2012 20:19 # +6
bormand 15.12.2012 21:58 # +6
DBdev 17.12.2012 12:47 # +2
Что-то скандинавское?
> comments_tbl
> news_tbl
> users_tbl
Венгерская нотация с хвоста? Оригинально, да...
> SELECT news_tbl.*, users_tbl.*,
...
> GROUP BY news_tbl.news_id
Как ЭТО вообще компилируется-то? ANSI SQL регламентирует, что при группировке поля должны быть или в GROUP BY или в выборке с указанием агрегации. Это мускул чтоль позволяет такой произвол делать?
bormand 17.12.2012 13:46 # +4
Ага, вот такая вот петрушка. Тоже офигел, когда первый раз эту фичу увидел (забыл добавить поле в групбай). Зачем эта херня включена по дефолту - х.з.
MySQL extends the use of GROUP BY so that the select list can refer to nonaggregated columns not named in the GROUP BY clause.
The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate. ...
To disable the MySQL GROUP BY extension, enable the ONLY_FULL_GROUP_BY SQL mode.
http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html
Lowezar 17.12.2012 14:02 # +2
Впрочем, у мускула есть и намного менее приятные особенности. Например, есть колонка, которая должна стать FOREIGN KEY и NOT NULL... Много времени я потом убил из-за того, что эта сволочь не ругнулась на недостающий ID и просто влепила туда 0.
bormand 17.12.2012 14:08 # +6
Сочетание этой фичи с уровнем знаний SQL у типичного пыхера равносильно тому, чтобы дать гранату обезьяне, и сказать "ну а что, мы же тут оставили возможность ее обезвредить".
P.S. Те кому эта фича действительно нужна могли бы ее включить руками, они для этого достаточно опытны и разумны. Но нахуйа, простите, такие вещи по дефолту?
P.P.S. Сам налетел на эту ошибку с any value когда опечатался и не добавил поле в групбай, долго отходил от шока, увидев что mysql даже ворнинга не сподобился выдать...
vladthesparrow 18.12.2012 10:21 # +3