Я один мастер стол и 5 таблицы ребенок называетсяСложное регистрации в SQL Server 2008
@POWER_CHILD, @AUDIO_CHILD, @RESISTOR_CHILD, @CAPACITOR_CHILD, @INDUCTOR_CHILD
мне нужно вытащить данные только тогда, когда есть совпадение с ребенком таблицы, но любой столбец содержать пустые т.е. без каких-либо данных в мастер таблица
Это будет считаться действительным и появится на выходе.
Я сделал Inner Join
, но не повезло. Как я могу справиться с пустым, поэтому я решил попросить экспертов.
Просьба не рассматривать в качестве основного фундаментального вопроса. пожалуйста, поделитесь своими мыслями.
DDL:
DECLARE @MASTER TABLE
(
PowerAmplifierID VARCHAR (50),
AudioAmplifierID VARCHAR (50),
ResistorID VARCHAR (50),
CapacitorID VARCHAR (50),
InductorID VARCHAR (50),
Years VARCHAR (50)
)
INSERT @MASTER
SELECT '24456', '5392','', '2190', '10', '1959' UNION ALL
SELECT '24456', '', '', '8888', '29', '1959' UNION ALL
SELECT '30583', '4233', '', '2190', '56', '1959' UNION ALL
SELECT '24455', '333333', '','2190','10', '1958' UNION ALL
SELECT '696969', '7879', '1xt','5000','29', '2015' UNION ALL
SELECT '24456', '5392', '', '2190', '29', '1959' UNION ALL
SELECT '24455', '4233', '', '2190', '56', '1959'
DECLARE @POWER_CHILD TABLE
(
PowerAmplifierID VARCHAR (50),
PowerAmplifier VARCHAR (50)
)
INSERT @POWER_CHILD
SELECT '24456', 'Class A Power Amplifiers' UNION ALL
SELECT '24455', 'Class B Power Amplifiers'
DECLARE @AUDIO_CHILD TABLE
(
AudioAmplifierID VARCHAR (50),
AudioAmplifier VARCHAR (50)
)
INSERT @AUDIO_CHILD
SELECT '5392' ,'Transconductance' UNION ALL
SELECT '4233' ,'Transresistance' UNION ALL
SELECT '7879', 'Vacuum-tube'
DECLARE @RESISTOR_CHILD TABLE
(
ResistorID VARCHAR (50),
Resistor VARCHAR (50)
)
INSERT @RESISTOR_CHILD
SELECT '1xt', 'Thick film' UNION ALL
SELECT '2xt', 'Metal film' UNION ALL
SELECT '3xt', 'Wirewound'
DECLARE @CAPACITOR_CHILD TABLE
(
CapacitorID VARCHAR (50),
Capacitor VARCHAR (50)
)
INSERT @CAPACITOR_CHILD
SELECT '2190', 'Film' UNION ALL
SELECT '3536', 'tantalum' UNION ALL
SELECT '9999', 'niobium'
DECLARE @INDUCTOR_CHILD TABLE
(
InductorID VARCHAR (50),
Inductor VARCHAR (50)
)
SELECT '29', 'air core' UNION ALL
SELECT '56', 'parasitic' UNION ALL
SELECT '35', 'Spiderweb'
Ожидаемый результат
PowerAmplifierID PowerAmplifier AudioAmplifierID AudioAmplifier ResistorID Resistor CapacitorID Capacitor InductorID Inductor Year
24456 Class A Power Amplifiers 5392 Transconductance '' '' 2190 Film 29 air core 1959
24455 Class B Power Amplifiers 4233 Transresistance '' '' 2190 Film 56 parasitic 1959
Большое спасибо ...
24456 5392 2190 10 1959 -- Invalid InductorID as not available in child table, so remove from output
24456 8888 29 1959-- Invalid CapacitorID as not available in child table,so remove from output
30583 4233 2190 56 1959-- Invalid Poweramplifierid as not available in child table, remove from output
24455 333333 2190 10 1958-- Invalid AudioAmplifierid as not available in child table, remove from output
696969 7879 1xt 5000 29 2015-- Invalid Poweramplifierid as not available in child table, remove from output
24456 5392 2190 29 1959 -- all valid id and resistorid is null so treated as valid record
24455 4233 2190 56 1959 -- all valid id and resistorid is null so treated as valid record
Где ваш текущий Цюй чень? что вы имеете в виду, когда есть соответствие с ребенком? есть 5 дочерних таблиц, какой? – sagi
Я не понимаю, что это значит: «Мне нужно вытащить данные только тогда, когда есть соответствие с дочерней таблицей, но любой столбец содержит пустую ('') в главной таблице, которая будет считаться действительной и появиться на выходе». Можете ли вы, возможно, получить родного английского докладчика, чтобы помочь вам переписать свой вопрос? –
@sagi: в ожидаемом выходе мы можем видеть данные из всей дочерней таблицы Я попытался использовать Внутреннее соединение, чтобы получить строки, когда значение соответствует, но не получает ожидаемого результата. Должен ли я отправить запрос?, Любезно помочь. – akhrot