Мне нужно пересечь две таблицы на основе столбца в обеих таблицах.
Вот мой фрагмент кода:
SELECT b.VisitID, b.CarrierName, b.PhoneNum, b.PatientName, b.SubscriberID, b.SubscriberName,
b.ChartNum, b.DoB, b.SubscriberEmp, b.ServiceDate, b.ProviderName, b.CPTCode, b.AgingDate,
b.BalanceAmt, f.FollowUpNote, f.InternalStatusCode FROM billing b JOIN followup f
USING (VisitID) WHERE b.VisitID = f.VisitID
В таблице «Followup» у меня 281 строка, И таблица «billing» содержит 2098 строк. Когда я выполняю этот запрос, я получаю 481 строку.
Кто-нибудь сталкивался с подобными проблемами? Не могли бы вы помочь мне пересечь эти таблицы?
Заранее спасибо ..
Я думаю, вам нравится здесь выполнять левое соединение (а не внутреннее соединение, как в вашем примере):
SELECT b.VisitID, b.CarrierName, b.PhoneNum, b.PatientName,
b.SubscriberID, b.SubscriberName, b.ChartNum, b.DoB,
b.SubscriberEmp, b.ServiceDate, b.ProviderName, b.CPTCode,
b.AgingDate, b.BalanceAmt,
f.FollowUpNote, f.InternalStatusCode
FROM billing b
LEFT JOIN followup f ON b.VisitID = f.VisitID
Это также вернет строки из таблицы "billing", у которых нет соответствующих полей в "followup" Таблица.
Мне кажется, что у вас, скорее всего, будет несколько последующих обращений. Таким образом, 481 запись из таблицы примечаний, скорее всего, точна.
Возможно, добавьте
ORDER BY b.SubscriberID
к приведенному выше ответу Йохена Юнга и согласитесь, что у вас правильное количество строк. в качестве альтернативы
GROUP BY b.SubscriberID
даст вам одну строку для каждого покупателя