За последние 24 часа нас посетили 18135 программистов и 1653 робота. Сейчас ищут 1612 программистов ...

Проблемы с удалением из нескольких таблиц

Тема в разделе "MySQL", создана пользователем Pronin1986, 30 июл 2009.

  1. Pronin1986

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

    С нами с:
    16 июн 2009
    Сообщения:
    9
    Симпатии:
    0
    Адрес:
    Москва
    Есть запрос:
    [sql]DELETE FROM `pod_category`, `items`, `chars_groups`
    USING `pod_category`, `items`, `chars_groups`
    WHERE pod_category.id=1 AND items.pod_cat=pod_category.id AND chars_groups.podcat_id = pod_category.id[/sql]

    Работает запрос следующим образом:
    Удаляет все записи из таблиц `pod_category`, `items`, `chars_groups`,
    которые удовлетворяют условиям pod_category.id=1 AND items.pod_cat=pod_category.id AND chars_groups.podcat_id = pod_category.id

    НО если, вдруг, в таблице chars_groups нет ниодной записи с полем podcat_id равном pod_category.id , то запрос не удаляет ничего, а нужно чтобы, в случае несовпадения условия по одной из таблиц, таблица просто игнорировалась, а из остальных удаление происходило.
     
  2. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    попробуй LEFT JOIN или RIGHT JOIN
     
  3. Pronin1986

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

    С нами с:
    16 июн 2009
    Сообщения:
    9
    Симпатии:
    0
    Адрес:
    Москва
    2 TheShock
    Спасибо
    Проблему решил. LEFT JOIN выручил.
     
  4. TheShock

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

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    учти, что Лефт-Джоин работает только в одну сторону - если в левой таблице записи есть, а в правой нет - он сработает, а наоборот - не сработает. Райт Джоин - наоборот.
    Чтобы сработало в обоих случаях - нужно писать эмуляцию FULL JOIN на MySQL - ищи про это в гугле