Помогите составить MySQL запрос.

Тема в разделе "Базы данных", создана пользователем garizlo, 9 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. garizlo

    garizlo Постоялец

    Регистр.:
    16 сен 2006
    Сообщения:
    104
    Симпатии:
    23
    Всем привет.

    В общем, по ID из URL выдергиваю информацию по продукту из таблицы: "products" запросом:
    SELECT p.* FROM p.products WHERE p.id=$id

    А в таблице "images_for_products" хранятся имена картинок для данного продукта, как я уже писал тут:
    http://www.nulled.ws/showthread.php?t=145379
    каждая картинка для продукта в новой строке.

    Так вот, можно ли одним запросом или запросом с подзапросами получить данные по товару из таблицы "products" и массив данных с именами картинок из таблицы "images_for_products"??

    Если делаю так:
    SELECT p.*, i.image FROM p.products, i.images_for_products WHERE p.id=$id AND p.id=i.product_id

    все работает, но из таблицы "images_for_products" получаю только одну, последнюю картинку, не массив. А картинок в таблице "images_for_products" для каждого товара может быть до 10 штук.

    Не силен в запросах, подскажите как быть?
    Заранее спасибо.
     
  2. BlackPawn

    BlackPawn Постоялец

    Регистр.:
    19 мар 2009
    Сообщения:
    75
    Симпатии:
    27
    SELECT p.*, i.image FROM p.products
    LEFT JOIN i.images_for_products ON p.id=i.product_id
    WHERE p.id=$id
    RTFM
     
  3. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    Логичней сделать 2 раздельных запроса.
     
  4. hegel

    hegel Писатель

    Регистр.:
    24 авг 2008
    Сообщения:
    9
    Симпатии:
    0
    а зачем? помоему так более правильно.
     
  5. Dziamid

    Dziamid Создатель

    Регистр.:
    8 окт 2008
    Сообщения:
    11
    Симпатии:
    0
    информация по продукту - 1 результат,
    картинки - много,
    поля разные, поэтому логично делать 2 запроса.
     
  6. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    а почему бы не воспользоваться group_concat?
     
  7. Dziamid

    Dziamid Создатель

    Регистр.:
    8 окт 2008
    Сообщения:
    11
    Симпатии:
    0
    group_concat - неплохой вариант, если нужны значения только одно столбца, напр. адреса картинок, но если инф. больше (тег alt, размеры, и т.д.) то, не очень удобно обрабатывать такой результат

    Добавлено через 2 минуты
    с тем же успехом можно хранить адреса картинок через запятую в таблице products, результат получим такой же
     
  8. dohtar

    dohtar Писатель

    Регистр.:
    28 ноя 2008
    Сообщения:
    7
    Симпатии:
    1
    полностью согласен
    если делать с left join, мускл вернет нам 10 раз информацию по одному и тому же продукту (т.е. эти 10 строк будут отличаться между собой только информацией о картинке, столбцы из таблицы p.* будут иметь одинаковые значения)
    вопрос не в экономии памяти или трафика между серверами, а в удобстве конретно для вас в последующей обработке полученных результатов :)
     
Статус темы:
Закрыта.