2015-06-23 2 views
0

Я хочу получить данные из нескольких таблиц с одним запросом. пример:результат нескольких таблиц в одном запросе

ТАБЛИЦА-А:

| LOT | ITEM | QTY | 
-------------------------- 
| 001 | PAPER | 20 | 
| 002 | INK | 10 | 
| 003 | PEN | 25 | 
-------------------------- 

ТАБЛИЦА-Б:

| LOT | ITEM | QTY | 
-------------------------- 
| 001 | PAPER | 20 | 
| 002 | INK | 10 | 
| 003 | PEN | 25 | 
-------------------------- 

ТАБЛИЦА-С:

| LOT | ITEM | QTY | 
-------------------------- 
| 001 | PAPER | 20 | 
| 002 | INK | 10 | 
| 003 | PEN | 25 | 
-------------------------- 

при выборе ЛОТ 001 из всех таблиц, я хотите получить результат:

| TABLE NAME | LOT | ITEM | QTY | 
--------------------------------- 
| TABLE-A | 001 | PAPER| 20 | 
| TABLE-B | 001 | PAPER| 20 | 
| TABLE-C | 001 | PAPER| 20 | 
--------------------------------- 

Thx за помощью

ответ

0

Попробуйте что-то вроде этого:

SELECT T.* FROM(
    SELECT 'TABLE-A' AS TABLE_NAME, LOT, ITEM, QTY FROM TABLE_A 
    UNION ALL 
    SELECT 'TABLE-B' AS TABLE_NAME, LOT, ITEM, QTY FROM TABLE_B 
    UNION ALL 
    SELECT 'TABLE-C' AS TABLE_NAME, LOT, ITEM, QTY FROM TABLE_C 
) AS T 
WHERE T.LOT = '001'; 
+0

произошла ошибка «Каждая производная таблица должна иметь свой собственный псевдоним» – NeoS

+0

@Neos См. Обновленный ответ. – user1578653

+1

yes..its работает и более эффективен – NeoS

0

Попробуйте, как показано ниже:

SELECT 'TABLE-A' as 'TABLE-A', LOT, ITEM, QTY FROM `table_a` where LOT = '001' 
UNION ALL 
SELECT 'TABLE-B' as 'TABLE-B', LOT, ITEM, QTY FROM `table_b` where LOT = '001' 
UNION ALL 
SELECT 'TABLE-C' as 'TABLE-C', LOT, ITEM, QTY FROM `table_c` where LOT = '001'; 
+0

результат не моя надежда : LOT | ПУНКТ | QTY ----------------------- 001 | PAPER | 20 ---------------------- – NeoS

+0

Пожалуйста, используйте обновленный запрос. – AnkiiG

+0

его работы ...... – NeoS

0

я был найден в запросе

SELECT 'table_a' as 'TABLE NAME', LOT, ITEM, QTY FROM `table_a` where LOT = '001' 
UNION ALL 
SELECT 'table_b' as 'TABLE NAME', LOT, ITEM, QTY FROM `table_b` where LOT = '001' 
UNION ALL 
SELECT 'table_c' as 'TABLE NAME', LOT, ITEM, QTY FROM `table_c` where LOT = '001'