2014-12-02 2 views
0

У меня есть следующий рабочий MySQL запрос, который ищет дубликаты:как добавить к югу выберите запрос

SELECT TSTVersion_ID, 
     xTSTVersions.TSTVersion, 
     TSTPatch 
FROM xTSTVersions 
INNER JOIN (SELECT TSTVersion  
      FROM xTSTVersions 
      GROUP BY TSTVersion 
     HAVING count(TSTVersion) > 1) dup 
ON xTSTVersions.TSTVersion = dup.TSTVersion 

Теперь мне нужно сделать следующие изменения, я хочу, чтобы получить список, которые НЕ дублирует а затем присоедините дополнительный столбец из другой таблицы - Лицензии, столбец - Программа или (Лицензии.Программа), которые могут быть объединены с таблицей xTSTVersions, используя общий столбец Version_ID из обеих таблиц.

Я полагаю, я должен изменить DUP запрос, чтобы захватить записи, которые я хочу:

HAVING count(TSTVersion) = 1) nondups 

Теперь, что у меня есть список nondups, как отредактировать запрос, чтобы добавить мой новый столбец из эта другая таблица (Licenses.Program)?

Становится ли это подобным подбору?

ответ

1
SELECT TSTVersion_ID, 
     xTSTVersions.TSTVersion, 
     TSTPatch, 
     Licenses.Program 
FROM xTSTVersions 
INNER JOIN (SELECT TSTVersion  
      FROM xTSTVersions 
      GROUP BY TSTVersion 
     HAVING count(TSTVersion) = 1) dup 
ON xTSTVersions.TSTVersion = dup.TSTVersion 
INNER JOIN Licenses 
ON xTSTVersions.TSTVersion_ID = Licenses.TSTVersion_ID 
+0

перед добавлением INNER JOIN, мой текущий список имел 40 записей. Как только я добавил INNER JOIN к лицензиям, я получил только 2 записи. То, что я ожидал, было для каждого TSTVersion_ID, что я бы захватил Программу. – noober

+0

@oramel Возможно, вам понадобится LEFT JOIN, но в этом случае программа будет NULL для некоторого TSTVersion_ID (которого нет в лицензиях) – Multisync

+0

спасибо, мы получили большую часть этого. Могу ли я по-прежнему отфильтровать NULL для программы? Я попробовал «И ПРОГРАММА НЕ НУЛЛ», но это не сработает. – noober

-1

Похоже стандарт присоединиться:

INNER JOIN xTSTVersions on xTSTVersions.Version_ID = TSVersion.Version_ID 
+0

Да, опечаток имя второй таблицы (TSVersion вместо лицензии) был явно хороший повод, чтобы голосовать, что вниз. Слово «версия» появилось только 11 раз в запросе SO, поэтому я уверен, что я должен быть идиотом, чтобы не обворачивать его вокруг всего, как за 14 секунд. Должен ли я писать учебник по SQL и что такое внутреннее соединение, чтобы получить кредит? Вы могли заметить, что принятое имеет то, что я сказал ... внутреннее соединение. Я так устал от stackoverflow. – shawnt00

Смежные вопросы