|
|
|
| Делаю такой запрос:
$sql_groups = "
SELECT
DISTINCT(articles_groups.id_group),
articles.id_article,
articles_groups.name
FROM articles_groups
LEFT JOIN articles USING(id_group)
WHERE articles_groups.showhide = '1'
AND articles_groups.type = '$type'
AND articles.id_article IS NOT NULL
ORDER BY articles_groups.pos";
|
Че-то он не работает. В смысле извелкает все, а не только с уникальным articles_groups.id_group.
Так и должно быть?
Можно ли как нибудь извелечь записи с уникальным articles_groups.id_group но без конструкции GROUP BY? | |
|
|
|
|
|
|
|
для: tAleks
(31.10.2011 в 17:53)
| | Можно ли как нибудь извелечь записи с уникальным articles_groups.id_group но без конструкции GROUP BY?
вы бы приоткрыли завесу тайны по каким таким причинам вас не устраивает GROUP BY | |
|
|
|
|
|
|
|
для: Valick
(31.10.2011 в 19:43)
| | Ну, вроде как GROUP BY вне агрегатного запроса не очень хорошо. | |
|
|
|
|
|
|
|
для: tAleks
(01.11.2011 в 12:45)
| | У вас фактически и есть агрегатный запрос. | |
|
|
|
|
|
|
|
для: cheops
(01.11.2011 в 13:01)
| | Агрегатная функция-то не используется.
В данном случае, без агрегатной функции, при группировке, одной записи в левой таблице соответствуют несколько записей в правой. Т.е. каую из этих правых записей мскул должен выбрать, при группировке? Меня вот это смущает. Поэтому и спрашиваю, как нибудь без GROUP BY можно выбрать записи из результирующей таблице с уникальными значениями столбца id_group?
Если бы объединнения небыло - тогда DISTINCT, а с объединением он не работает. | |
|
|
|
|
|
|
|
для: tAleks
(01.11.2011 в 13:08)
| | Будет выбрано случайное значение, как в прочем и при DISTINCT. Если это поведение не устраивает, нужно формировать более хитрый запрос. | |
|
|
|
|
|
|
|
для: cheops
(01.11.2011 в 13:11)
| | Более хитрый, это означает наиболее тяжелый и ресурсозатратный для мускула?
Или более хитрый, в плане что он хитрый, но при этом выполняется более быстро, и с наименьшими ресурсозатратами? | |
|
|
|
|
|
|
|
для: tAleks
(01.11.2011 в 13:14)
| | Это зависит от данных и индексации, как правило, да запрос будет более ресурсоемким, так как вместо первой попавшейся строки из готовой таблицы будет предварительно формироваться вспомогательная таблица (которая будем затем подвергаться объединению). Если размеры таблиц не велики, такая таблица вполне сможет уместиться в буфере, расположенном в оперативной памяти, в противном случае, она отправится на жесткий диск. | |
|
|
|