2015-06-12 6 views
2

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

TABLEA: -

CREATE TABLE tableA (
    firstId INT(6), 
    secondId INT(6), 
    product VARCHAR(30) default NULL, 
    primary key (firstId, secondId) 
) 

TableB: -

CREATE TABLE tableB (
    firstId INT(6), 
    product VARCHAR(30) default NULL, 
    primary key (firstId) 
) 

INSERT INTO `tableA` (
`firstId` , 
`secondId` , 
`product` 
) VALUES ('1', '10', 'hello'), ('1', '11', NULL); 

INSERT INTO `tableB` (`firstId`, `product`) VALUES ('1', 'original'); 

Теперь я буду иметь firstId и secondId, и я должен получить информацию о продукте but condition is, если комбинация (firstId и secondId) находится в таблице , а затем получите информацию о продукте из нее, и если она равна NULL, тогда ge t из таблицыB в отношении firstId.

Для например: -

Если у меня есть firstID = 1 и secondId = 10, то hello shold получают в качестве выходного сигнала

Если у меня есть firstID = 1 и secondId = 11 затем original shold получить как выход

Если у меня есть firstID = 1 и secondId = 12, то original shold получить как выход

Мне нужно это в одном запросе, если это возможно. Любая помощь приветствуется.

+0

Это * может * быть возможно сделать это в одном запросе с достаточно условными, но я не буду пытаться. Я бы предположил, что правильное решение здесь - совсем другая схема. Некоторые моменты, которые следует учитывать: - 'firstID' и' secondID' - не очень описательные имена (то же самое относится к 'tableA' &' tableB') ​​ - это похоже на 'tableB', это действительно основная таблица, а' tableA' списки субпродуктов; ваши запросы будут проще, если ваша схема лучше отражает отношения. – nthall

ответ

1

Вы можете написать функцию потока управления внутри туздо высказывание:

$first='1';$second='10'; 


SELECT IF(exists(select * FROM tableA WHERE 
tableA.firstId = '$first' and tableA.secondId = '$second' 
and tableA.product!= 'NULL'),tableA.product, tableB.product) 
FROM tableA, tableB ; 
+0

Не работает. он всегда дает два выхода. для '(1,10)' он дает 'hello, original', который должен быть' hello', для '(1,11)' он дает 'оригинал, оригинал', который должен появиться' оригинал'. проверьте вопрос, я привел пример – Ashwani

+0

Ответ SELECT statament для каждого файла в таблицеA, для (1,10) дает привет, оригинал. – Circum

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