2016-10-03 2 views
0

Возможно, тупой вопрос: buts Я потратил достаточно часов, чтобы мне действительно нужна внешняя помощь.SQL все данные из таблицы 1 некоторые данные из таблицы 2

У меня есть одна таблица, которая имеет список имен: некоторые из этих имен не могут быть в таблице два, и мне нужны все имена.

Во второй таблице у меня есть одни и те же имена, но эти имена могут быть указаны с датой события и типом события.

Как бы я перечислил все имена из первой. А также включают события из таблицы 2, заданные конкретными типами событий.

Это означает, что имя в таблице 1 не связано с событием в таблице 2, оно все равно будет печататься.

Я пробовал левое внешнее соединение: но не могу понять, как ограничить данные, поступающие из таблицы 2: или если я помещаю предложение where, предложение where, похоже, аннулирует добавление всех имен из таблицы 1, потому что они не встречаются параметры, которые я разместить на столе 2.

+0

Просьба указать данные образца –

+0

показывает, что вы пытались сделать, мы можем попытаться исправить или улучшить его, а также показать правильный образец данных и ожидаемый результат. – scaisEdge

+1

При использовании 'external join' с критериями' where' вам нужно переместить критерии 'where' в критерии' on' 'join', чтобы он не отрицал' external join'. – sgeddes

ответ

0

Для SQL Server мое предложение что-то вроде этого:

CREATE TABLE tblNames(
    Name NVARCHAR(MAX) NOT NULL) 
GO 

INSERT INTO tblNames (Name) VALUES ('Jim'), ('Jack'), ('Joe') 
GO 

CREATE TABLE tblEvents(
    Name NVARCHAR(MAX) NOT NULL, 
    EventDate NVARCHAR(max) NOT NULL, 
    EventType NVARCHAR(max) NOT NULL) 
GO 

INSERT INTO tblEvents (Name, EventDate, EventType) VALUES 
    ('Jim', '04/05/2000', 'Birthday'), 
    ('Joe', '01/01/1999', 'Marriage') 
GO 

SELECT 
    tblNames.Name, 
    tblEvents.EventDate, 
    tblEvents.EventType 
FROM tblNames 
    LEFT OUTER JOIN tblEvents 
     ON tblNames.Name = tblEvents.Name 
      AND tblEvents.EventType = 'Birthday' 

это даст вам все имена в колонке имен, и если есть запись в tblEvents с согласования тип события, вы будете иметь эту информацию в других столбцах.

+1

не мог также отказаться от вложенного запроса и вместо этого разместить второй критерий в соединении, например 'on tblNames.Name = tblEvents.Name и tblEvents.EventType = 'Birthday'' – Todd

+0

@Todd, вы совершенно правы. Это намного приятнее и компактнее. Я редактировал образец. Спасибо. – usterdev

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