Форум → Разработка → Базы данных → JOIN и GROUP
JOIN и GROUP
Страницы: ← Предыдущая страница • Следующая страница →
-
-
30 марта 2009 г. 23:22, спустя 6 минут 7 секунд
ага, надо будет почитать че-нибудь умное про оптимизацию запросов… -
2 апреля 2009 г. 17:44, спустя 2 дня 18 часов 21 минуту
Есть таблицы photos и albums. Нужно выбрать список альбомов и + по одной фотографии для каждого (любая случайная фотка). Ничего умнее чем группировать по album_id не придумал:SELECT * FROM albums
LEFT JOIN photos ON (albums.album_id=photos.photo_id)
GROUP BY albums.album_id
Получается, что сначала будут выбраны все записи из photos, сделается join с albums, потом сгруппируются. Громоздко как-то.
Ещё можно, конечно, добавить в albums поле, типа main_photo_id и держать там значение фотки. Просто может есть проще вариант?
Мне кажется, что вот это…
(albums.album_id=photos.photo_id)
вообще ничего не должно выдать. Должно быть вот так:SELECT * FROM albums
LEFT JOIN photos ON (photos.album_id=albums.album_id)
GROUP BY albums.album_id
Но этот запрос будет всегда выдавать первую добавленную картинку, а не случайную.
А вот если нужна случайная картинка для альбома, тогда лучше сделать так:SELECT * FROM albums as a
LEFT JOIN (SELECT DISTINCT * FROM photos ORDER BY RAND()) as p ON (p.album_id=a.album_id)
GROUP BY a.album_id -
2 апреля 2009 г. 18:07, спустя 23 минуты 17 секунд
diter98, а какая разница?
Разве операция сравнения в SQL некоммутативна?
По поводу случайной выборки — спасибо, но такая задача не стоит ) -
2 апреля 2009 г. 18:09, спустя 2 минуты 36 секунд
diter98, ложь, чушь! грех ткое писатьСапожник без сапог -
2 апреля 2009 г. 21:37, спустя 3 часа 27 минут 17 секунд
SELECT * FROM albums
LEFT JOIN photos ON (photos.album_id=albums.album_id)
GROUP BY albums.album_id
Но этот запрос будет всегда выдавать первую добавленную картинку, а не случайную.
diter98, хедкраба сними :)
Timur, причем здесь коммутативность? -
2 апреля 2009 г. 22:54, спустя 1 час 16 минут 56 секунд
Непричем, меня переглючило опять
diter98, ай м сорри
Надо начинать высыпаться… -
-
3 апреля 2009 г. 8:32, спустя 7 часов 56 минут 40 секунд
…Нужно выбрать список альбомов и + по одной фотографии для каждого (любая случайная фотка)…
…По поводу случайной выборки — спасибо, но такая задача не стоит )
Ну, извините, второго сообщения я не заметил, когда отвечал на первое.
CTAPbIu_MABP, ты тут самый матерый зубр. Можно поинтересоваться, что сие значит?diter98, хедкраба сними :)
бугагага
А то я с подобным слэнгом еще не встречался… -
3 апреля 2009 г. 13:57, спустя 5 часов 24 минуты 53 секунды
diter98, ты не шпилешь по олбанске? ти многаие патирял кросавчег!Сапожник без сапог -
3 апреля 2009 г. 14:00, спустя 3 минуты 6 секунд
diter98, хедкраб это таоке животное из игры halflife оно содитсо на голову и выедает мозг после чего человек становиться зомби…
надеюсь намек понятен -
3 апреля 2009 г. 14:04, спустя 4 минуты 13 секунд
во время тестов адронного калайдера, многие ждали хедкрабов. в штатах даже умники умудрились в очередной раз заработать миллионы на продаже покрашеных в красный цвет ломах/гвоздодерах )))))))))))))))))))))Сапожник без сапог -
3 апреля 2009 г. 16:25, спустя 2 часа 20 минут 34 секунды
я все еще жду хедкрабов, они от колайдера не зависят
ЗЫ дуд вылези в скайп -
3 апреля 2009 г. 16:49, спустя 24 минуты 27 секунд
так я в скайпеalexandr.shurigin
Сапожник без сапог -
3 апреля 2009 г. 23:08, спустя 6 часов 18 минут 49 секунд
да я знаю.
у тебя переадресация и ты не отвечаешь
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!