За последние 24 часа нас посетили 21549 программистов и 1032 робота. Сейчас ищут 686 программистов ...

Помогите с sql запросом.

Тема в разделе "PHP и базы данных", создана пользователем Artur_hopf, 30 июл 2020.

  1. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Что то голова не варит.
    Допустим есть 2 таблички
    в одной есть id пользователей
    Код (Text):
    1. id | name | ...
    2. 1  | вася | ...
    3. 2  | петя | ...
    в другой есть данные связанные с этими пользователями по id.
    Код (Text):
    1. user_id | type
    2. 1       | 1
    3. 1       | 2
    4. 1       | 4
    5. 2       | 1
    6. 2       | 3
    7. 2       | 6
    Задача. Если во второй таблице есть пользователь с type = 6. То его вообще не выводить в результате.
    Например результат должен быть таким
    Код (Text):
    1. id | name | ...
    2. 1  | вася | ...
    Или если у обоих были type = 6 то никого.

    И да без php. Именно sql запросом.
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Вот так сработало. Но грамотно ли тут написано, подскажите
    через NOT EXISTS
    PHP:
    1. SELECT `pu`.*, `gu`.`email`, `es`.`type`, `es`.`date_send`
    2.     FROM `pay_users` AS `pu`
    3.     LEFT JOIN  `google_users` AS `gu` ON `gu`.`id` = `pu`.`user_id`
    4.     LEFT JOIN  `email_send_archive` AS `es` ON `es`.`pay_id` = `pu`.`id`
    5.     WHERE `pu`.`status` = 0
    6.     AND `gu`.`pay` = 'terminal'
    7.     AND NOT EXISTS (
    8.         SELECT * FROM `email_send_archive` AS `es2`
    9.             WHERE `es`.`pay_id` = `es2`.`pay_id`
    10.             AND`es2`.`type` = 6
    11.     );
     
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Artur_hopf, или not exitsts с подзапросом, или вообще группировка by id having count(type = 6) = 0
     
    Artur_hopf нравится это.
  4. amberson

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

    С нами с:
    23 июл 2020
    Сообщения:
    62
    Симпатии:
    14
    Может быть так сработает, по первому сообщению?
    Код (Text):
    1. select * from users, types
    2.   where users.id = types.user_id
    3.   and types.type != 6