За последние 24 часа нас посетили 17813 программистов и 1645 роботов. Сейчас ищут 1952 программиста ...

Проблема с запросом

Тема в разделе "PHP для новичков", создана пользователем Powinteh, 12 окт 2011.

  1. Powinteh

    Powinteh Активный пользователь

    С нами с:
    4 окт 2011
    Сообщения:
    10
    Симпатии:
    0
    Сейчас изложу суть проблемы.
    Есть таблица №1:

    `keys`

    id | keyword | google | yandex
    --------------------------------
    1 | париж | 10 | 20
    --------------------------------
    2 | техника | 15 | 30

    Есть таблица №2:

    post

    id | title | skeys
    ------------------------
    1 | Заголовок | 1, 2

    Задача заключается в составлении запроса, который бы брал каждую запись из post и прикреплял к ней суммарное значение google и yandex записей 1, 2 (post.skeys) из таблицы keys.

    Пробовал так:


    SELECT p.id, title, SUM(k.google) google, SUM(k.yandex) yandex FROM post p
    LEFT JOIN `keys` k ON k.id IN (p.skeys)



    Ошибки нет, но оно выбирает только первую запись (тобишь с id = 1 )

    Пробовал в IN вписать подзапрос SELECT, тоже самое...

    Если написать запрос так:


    SELECT p.id, title, SUM(k.google) google, SUM(k.yandex) yandex FROM post p
    LEFT JOIN `keys` k ON k.id IN (1, 2)



    То все работает корректно, но значение "1,2" нужно брать из поля p.skeys
    Спасибо!
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    Powinteh
    У вас связь между таблицами `keys` и `post` "многие-ко-многим". Такая связь реализуется через промежуточную таблицу