2015-02-24 3 views
0

Я борюсь с запросом mysql, я хотел бы создать запрос с несколькими таблицами и иметь возможность поиска или конкретных столбцов во всех трех таблицах сразу, база данных и таблицы уже созданы и заполнены. (извините, если это легко, но я довольно новая в MySQL)Проблемы с MYSQL используют 3 таблицы в одном запросе

Пример:

таблица 1

`ID`,`number`,`name`,`genre`,`location`,`type` 
1, 1001, Linkin Park, Rock, L001, cd 
2, 1002, 3 doors down, Alternative, L002, cd 
3, 1003, golden earring, Rock, L003, cd 

таблица 2

`ID`,`number`,`name`,`genre`,`location`,`type` 
1, 1001, Kill bill, Action, L001, dvd 
2, 1002, Hulk, Action, L002, dvd 
3, 1003, Driven, Action, L003, dvd 

таблица 2

`ID`,`number`,`name`,`genre`,`location`,`type` 
1, 1001, Call of Duty, Action, L001, Game 
2, 1002, Battlefield, Action, L002, Game 
3, 1003, Red Alert, strategy, L003, Game 

что-то вроде:

SELECT 'number', 'name', 'genre', 'location', 'type' FROM tb1, tb2, tb3 WHERE type = 'Game' 
+1

Первый вопрос: почему у вас есть эти 3 стола? Все данные могут вписываться в один. Возможно, есть причина, но вместо того, чтобы пытаться сделать запрос, я попытаюсь реорганизовать базу данных. –

+0

, если ни одна из записей в этих таблицах не содержит ничего общего, кроме структуры, то вы не можете присоединиться к ним. sql 'join' - для связанных таблиц. вам, вероятно, понадобится запрос на объединение: 'select ... from table1 union all select ... from table2 union all select ... table3' –

+0

Потому что он делает все немного более организованным, игры всех видов в игровой таблице (например: Playstation, pc и xbox - это типы игр) и то же самое с dvd (dvd, blueray, 3d и т. д.) и музыкой (cd, dvd, lp) –

ответ

1

Одним из способов вы можете достичь того, чего вы хотите, делает UNION всех таблиц, следующим образом:

SELECT `number`, `name`, `genre`, `location`, `type` FROM 
(SELECT `number`, `name`, `genre`, `location`, `type` FROM tb1 
    UNION ALL 
    SELECT `number`, `name`, `genre`, `location`, `type` FROM tb2 
    UNION ALL 
    SELECT `number`, `name`, `genre`, `location`, `type` FROM tb3) tb123 
WHERE tb123.`type` = 'Game' 

Но я бы на самом деле рекомендую вам посмотреть в настройке базы данных иначе . Например, поместите все в одну таблицу.

+1

'' number ',' name ',' genre ',' location ',' type'' должны быть украшены '' – underscore

+0

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

+0

Спасибо @underscore, исправил ее. Первоначально просто копируется с OP. – CompuChip

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