Новичок в SQL, как я могу использовать результаты вызова SELECT для TableA для SELECT против TableB? - PullRequest
1 голос
/ 01 октября 2010

Я использую phpMyAdmin для запроса базы данных.

Я хочу выбрать все записи в таблице A, где Date = '2010-08-01'. Затем я хочу использовать атрибуты SubID элементов в таблице результатов, чтобы найти все записи в TableB с соответствующими SubID. Я знаю, что должен где-то использовать JOIN, но я не уверен, как и где.

Я искал StackOverflow, и, похоже, было много похожих вопросов, но ни один из них не был таким базовым (иначе как noob), как мой. Я не мог понять, о чем они говорили. Чтобы дать вам представление о том, что я знаю, я начал изучать SQL сегодня и прочитал учебник W3 School по SQL. Я чувствую, что ответ будет предельно очевидным, и я буду шлепать себя за то, что не понял его.

Большое спасибо.

Ответы [ 3 ]

2 голосов
/ 01 октября 2010

Хорошая ссылка: http://www.w3schools.com/sql

Что вам нужно:

SELECT *
FROM TableA a
JOIN TableB b on a.SubID = b.SubID
WHERE a.Date = '2010-08-01'

Редактировать в соответствии с другими постами - JOIN, вероятно, будет более эффективным, однако если у вас есть несколько записей в TableB с одним и тем же SubID, вы получите дублированные записи из TableA.

1 голос
/ 01 октября 2010

Если вы ищете объединение, сообщение ck предлагает простое решение.

Еще один способ решения этой проблемы - использование подзапроса (это пришло мне в голову после прочтенияназвание вашего вопроса):

SELECT * FROM TableB WHERE SubID IN
    (SELECT SubID FROM TableA WHERE Date = '2010-08-01')

Внешний запрос SELECT (выбирается из TableB) выбирает строки, чьи SubID s найдены в наборе результатов внутреннего запроса SELECT (выбирается изTableA).Так, например, если TableA поднимает пять строк с этими SubID с:

  • 8
  • 11
  • 12
  • 27
  • 35

Затем будут выбраны строки из TableB, чьи SubID s IN (8, 11, 12, 27, 35).

1 голос
/ 01 октября 2010

На самом деле вам не нужно JOIN - просто подзапрос для фильтрации TableB.Например, так:

SELECT SubID
FROM TableB
WHERE SubID IN
    (SELECT SubID
     FROM TableA
     WHERE Date='2010-08-01');

Тем не менее, вы можете использовать соединение согласно ответу @ ck.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...