За последние 24 часа нас посетили 16597 программистов и 1681 робот. Сейчас ищут 939 программистов ...

Выбрать ID по двум совпадениям в одном поле

Тема в разделе "MySQL", создана пользователем boo, 1 фев 2011.

  1. boo

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

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    Помогите, выбрать ID_POST по двум совпадениям в одном поле
    PHP:
    1.  
    2. id id_post value
    3. 1 1  Москва
    4. 2 1  группа1
    5. 3 2  Киев
    6. 4 3  Минск
    7. 5 2  группа2
    8. 6 3  группа3
    9.  
    надо что то такое, если оба value с одинаковым id_post то вывод этого ИД
    [sql]
    SELECT DISTINCT `id_post` FROM `post` WHERE value = 'Москва' AND value = 'группа1'
    [/sql]
    если нет:
    [sql]
    SELECT DISTINCT `id_post` FROM `post` WHERE value = 'Москва' AND value = 'группа3'
    [/sql]
    пусто
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Теги что-ли реализуются?
    [sql]SELECT DISTINCT T1.id_post FROM post AS T1, post AS T2
    WHERE T1.id_post=T2.id_post AND T1.value = 'Москва' AND T2.value = 'группа1'[/sql]
     
  3. boo

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

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    поиск по тегам, нужно чтоб 2 условия выбирались из выпадающего списка.
    wordpress, там к сожалению идёт выборка через JOIN.
    PHP:
    1.  
    2. $join .= " JOIN $wpdb->postmeta ON ($wpdb->posts.ID = $wpdb->postmeta.post_id) ";
    3. $where .= $wpdb->prepare(" AND t1.$wpdb->postmeta.meta_value {$q['meta_compare']} %s ", $q['meta_value'][0]);
    4.  
    так вот во 2ую строку надо добавить ещё и $q['meta_value'][1]
    Если не сложно, не могли бы показать похожее решение что давали выше с использование JOIN, или линк где можно посмотреть такие запросы. В мануалах более простые примеры.
    ПС: не понимаю куда префиксы писать, в JOIN они и так уже есть(названия таблиц)....
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    [sql]SELECT DISTINCT T1.id_post FROM post AS T1
    INNER JOIN post AS T2 ON T1.id_post=T2.id_post
    WHERE T1.value = 'Москва' AND T2.value = 'группа1'[/sql]
     
  5. boo

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

    С нами с:
    16 мар 2008
    Сообщения:
    84
    Симпатии:
    0
    Спасибо за помощь, не вышло написать в общем стиле функций.
    пришлось реализовать таким, не очень красивым, образом:
    [sql]
    ... id IN (SELECT DISTINCT T1.id_post FROM post AS T1, post AS T2
    WHERE T1.id_post=T2.id_post AND T1.value = 'Москва' AND T2.value = 'группа1')";
    [/sql]
    И всё же с вашей помощью проблема решена. :roll: ещё раз благодарю!