Проверка двух таблиц друг против друга в запросе MySQL - PullRequest
0 голосов
/ 11 октября 2010

Мне кажется, что я пишу словесную проблему, но это действительно озадачивает меня, и я действительно надеюсь, что кто-то здесь сможет решить ее:

Я хочу выбрать одну строку из таблицы A. Таблица A содержит атрибуты Name и Number. Но прежде чем завершить запрос, я хочу сравнить его с таблицей B. Таблица B содержит имя, номер и имя пользователя. Основываясь на входных данных пользователей, он вставляет в таблицу B строки, содержащие их имя пользователя, а также имя и номер. Теперь в моем запросе, где я выбираю строку из таблицы A, я хочу убедиться, что в таблице B нет строк с совпадающими именами и номерами для этого конкретного пользователя.

Я пробовал ГДЕ (A.Name = B.Name AND A.Number = B.Number AND B.Username! = '$ Username'), но я думаю, что это было далеко от основания. Любая помощь будет ... удивительной.

Ответы [ 3 ]

2 голосов
/ 11 октября 2010
SELECT
   A.id
FROM
   A
   LEFT OUTER JOIN B ON
      (A.Name = B.Name AND A.Number = B.Number)
WHERE
   B.Name IS NULL
   AND B.Number IS NULL
   AND B.Username = ?
1 голос
/ 11 октября 2010
select a.id
from a
where
a.name=:name
and
not exists(select 1 from b where b.id=a.id and b.name=a.name)
0 голосов
/ 11 октября 2010
  IF NOT EXISTS  ( SELECT 1 
       FROM tableA a
       INNER JOIN tableB b
       ON a.name = b.name
       AND a.number= b.number
       AND b.UserName = 'user' and b.name = 'name'and b.number = 'number')
  SELECT *
  FROM tableA x
  WHERE x.name = 'name'and x.number = 'number'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...