2012-01-18 2 views
0

У меня есть две таблицыMySQL выбрать из таблицы 2, такой же, как таблицы 1

"работодателей":

emp_id empl_name  wage 
    1  john   20/h 
    2  mike   20/h 
    3  sam   30/h 

"позиции":

pos_id emp_id pos_name related_pos 
    1  1  cleaner  0 
    2  3  driver  3 
    3  2  bodyguard  0 

мне нужно таблица отображения с Наименование работодателя, должность, заработная плата, связанное с этим положение, отставка Pos Pos, Rel Pos Работодатель

Теперь у меня есть запрос:

SELECT pos_name, empl_name, wage 
    FROM positions 
     LEFT JOIN employers ON employers.emp_id = positions.emp_id 

следующий rquest не работает, но дает представление о том, что мне нужно:

SELECT pos_name, empl_name, wage, (SELECT empl_name 
             FROM positions 
             LEFT JOIN employers ON employers.emp_id = positions.related_pos) as emp2, 
            (SELECT pos_name 
             FROM positions 
             WHERE pos_id = related_pos) as pos2 
    FROM positions 
     LEFT JOIN employers ON employers.emp_id = positions.emp_id 
+0

Не дает мне эту идею. Чего вы хотите достичь? – kapa

+0

Humm .. запрос, который не дает то, что вам нужно, не является способом описания проблемы. Можете ли вы просто поставить вывод запроса, который вы ожидаете? –

ответ

0

Я думаю, что этот код будет делать свою работу.

SELECT 
p.pos_name, 
p.empl_name, 
p.wage, 
(SELECT pos_name FROM positions WHERE pos_id = p.related_pos) as pos2 
FROM positions as p 
INNER JOIN employers as e ON e.emp_id = p.emp_id 

Я удалил следующий код.

(SELECT empl_name FROM positions 
    LEFT JOIN employers ON employers.emp_id = positions.related_pos) as emp2, 

Потому что я думаю, что есть две ошибки. Сначала в таблице нет столбца empl_name. Второй этот подзапрос даст больше, чем результат для строки. Это также относится к первому подзапросу, когда имеется более одной записи для emp_id

0

Похоже, вы только что сделали это более сложным, чем это должно быть. Если я правильно понимаю, вы хотите связать таблицы. Перерыв это на три части:

селектов должны включать в себя имя работодателя, должность Имя, заработная плата, относящаяся Позиция Имя, Rel Pos заработной плата, Rel Pos Работодатель

от работодателей, позиции

ГДЕ positions.emp_id = employ.emp_id

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

Извините, если это не то, что вы имели в виду. Дайте мне кивнуть, если это так.

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