ФорумРазработкаБазы данных → JOIN и GROUP

JOIN и GROUP

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 30 марта 2009 г. 23:16, спустя 24 секунды

    Сообщений: 3373


    3 тройки. счастливо :)
    Сапожник без сапог
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 30 марта 2009 г. 23:22, спустя 6 минут 7 секунд

    ага, надо будет почитать че-нибудь умное про оптимизацию запросов…
  • diter98

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 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

  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 апреля 2009 г. 18:07, спустя 23 минуты 17 секунд

    diter98, а какая разница?
    Разве операция сравнения в SQL некоммутативна?

    По поводу случайной выборки — спасибо, но такая задача не стоит )
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 2 апреля 2009 г. 18:09, спустя 2 минуты 36 секунд

    diter98, ложь, чушь! грех ткое писать
    Сапожник без сапог
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 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, причем здесь коммутативность?
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 2 апреля 2009 г. 22:54, спустя 1 час 16 минут 56 секунд

    Непричем, меня переглючило опять

    diter98, ай м сорри

    Надо начинать высыпаться…
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 0:36, спустя 1 час 41 минуту 52 секунды

    diter98, хедкраба сними :)

    бугагага
  • diter98

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 3 апреля 2009 г. 8:32, спустя 7 часов 56 минут 40 секунд


    …Нужно выбрать список альбомов и + по одной фотографии для каждого (любая случайная фотка)…


    …По поводу случайной выборки — спасибо, но такая задача не стоит )

    Ну, извините, второго сообщения я не заметил, когда отвечал на первое.

    CTAPbIu_MABP, ты тут самый матерый зубр. Можно поинтересоваться, что сие значит?

    diter98, хедкраба сними :)

    бугагага

    А то я с подобным слэнгом еще не встречался…
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 13:57, спустя 5 часов 24 минуты 53 секунды

    diter98, ты не шпилешь по олбанске? ти многаие патирял кросавчег!
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 14:00, спустя 3 минуты 6 секунд

    diter98, хедкраб это таоке животное из игры halflife оно содитсо на голову и выедает мозг после чего человек становиться зомби…

    надеюсь намек понятен
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 14:04, спустя 4 минуты 13 секунд

    во время тестов адронного калайдера, многие ждали хедкрабов. в штатах даже умники умудрились в очередной раз заработать миллионы на продаже покрашеных в красный цвет ломах/гвоздодерах )))))))))))))))))))))
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 16:25, спустя 2 часа 20 минут 34 секунды

    я все еще жду хедкрабов, они от колайдера не зависят


    ЗЫ дуд вылези в скайп
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 16:49, спустя 24 минуты 27 секунд

    так я в скайпе

    alexandr.shurigin
    Сапожник без сапог
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz 3 апреля 2009 г. 23:08, спустя 6 часов 18 минут 49 секунд

    да я знаю.
    у тебя переадресация и ты не отвечаешь

Пожалуйста, авторизуйтесь, чтобы написать комментарий!