2015-11-25 3 views
0

В каждой таблице есть номер игрока. Я хочу получить все столбцы из всех таблиц в одном результате. То есть например, для ежедневной строки все столбцы из других таблиц 0. Как это:MySQL: выберите все из нескольких таблиц

enter image description here

Таблицы:

CREATE TABLE `daily` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
`playerNumber` varchar(255) DEFAULT '', 
`benchpress` varchar(255) DEFAULT ''); 

CREATE TABLE `weekly` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
`playerNumber` varchar(255) DEFAULT '', 
`sprint40y` varchar(255) DEFAULT '', 
`sprint20y` varchar(255) DEFAULT ''); 

CREATE TABLE `monthly` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
`playerNumber` varchar(255) DEFAULT '', 
`verticalJump` varchar(255) DEFAULT '', 
`sprint300y` varchar(255) DEFAULT '', 
`ldrill` varchar(255) DEFAULT ''); 

SQL запросов:

SELECT * 
FROM 
    daily d,weekly w,monthly m 
LEFT JOIN 
    daily d.playerNumber ON (d.playerNumber = w.playerNumber) AND daily d.playerNumber ON (d.playerNumber = m.playerNumber) 
UNION 
    SELECT * 
FROM 
    daily d,weekly w,monthly m 
RIGHT JOIN 
    daily d.playerNumber ON (d.playerNumber = w.playerNumber) AND daily d.playerNumber ON (d.playerNumber = m.playerNumber) 
+0

Как правило, лучше всего обрабатывать проблемы отображения данных в уровне представления/на уровне прикладного уровня (например, PHP), если это доступно. Так или иначе, на этот вопрос уже был дан ответ уже тысячу раз. – Strawberry

+0

... хотя, я не могу себе представить, почему вам нужно 3 отдельных строки в этом экземпляре?!?!? – Strawberry

+0

Потому что в ежедневной таблице много записей для каждого игрока и только несколько в таблице за месяц. – Kewitschka

ответ

0
SELECT `playerNumber`, 
     `benchpress`, 
     IFNULL(`sprint40y`,0) AS benchpress, 
     IFNULL(`sprint20y`,0) AS sprint20y, 
     IFNULL(`verticalJump`,0) AS verticalJump, 
     IFNULL(`sprint300y`,0) AS sprint300y, 
     IFNULL(`ldrill`,0) AS ldrill 

FROM daily 
LEFT JOIN weekly ON daily.`playerNumber`=weekly.`playerNumber` 
LEFT JOIN monthly ON daily.`playerNumber`=monthly.`playerNumber` 

Надежда это помогает.

+0

Любое обновление ............. –

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