2014-11-05 8 views
2

Я пытаюсь объединить несколько столбцов из нескольких таблиц, но некоторые из моих данных, похоже, повторяются. Как должен мой запрос избегать этого?MySQL объединяет несколько столбцов из нескольких таблиц

У меня есть следующие таблицы:

LEGE_ROM 
+----------+------------+-----+ 
| ansattnr | dag  | rom | 
+----------+------------+-----+ 
| L102  | 2012-09-23 | b01 | 
+----------+------------+-----+ 
| L100  | 2012-09-12 | k10 | 
+----------+------------+-----+ 
| L100  | 2013-03-05 | k10 | 
+----------+------------+-----+ 
| L100  | 2014-03-02 | k10 | 
+----------+------------+-----+ 
| L100  | 2014-10-15 | K10 | 
+----------+------------+-----+ 
| L100  | 2014-11-03 | k10 | 
+----------+------------+-----+ 
| L102  | 2012-09-12 | k11 | 
+----------+------------+-----+ 
| L100  | 2014-11-10 | k12 | 
+----------+------------+-----+ 
| L110  | 2012-09-13 | k12 | 
+----------+------------+-----+ 

ROM_BEHANDLING 
+-----+--------------+ 
| rom | behandling | 
+-----+--------------+ 
| b01 | kirurgisk | 
+-----+--------------+ 
| k10 | konsultasjon | 
+-----+--------------+ 
| k11 | konsultasjon | 
+-----+--------------+ 
| k12 | konsultasjon | 
+-----+--------------+ 

Нужная таблица выхода (таблица редактировались):

+----------+-----+--------------+ 
| ansattnr | rom | behandling | 
+----------+-----+--------------+ 
| L100  | k10 | konsultasjon | 
+----------+-----+--------------+ 
| L102  | k11 | konsultasjon | 
+----------+-----+--------------+ 
| L110  | k12 | konsultasjon | 
+----------+-----+--------------+ 

и присоединитесь должны быть использована для достижения желаемого выходного стола.

Я пытался использовать следующий запрос:

SELECT lr.ansattnr, lr.rom, rb.behandling 
FROM LEGE_ROM lr JOIN ROM_BEHANDLING rb 
WHERE rb.behandling='konsultasjon'; 
+1

Вам нужен 'On' пункт для вашего' Join'. 'FROM LEGE_ROM lr JOIN ROM_BEHANDLING rb ON lr.rom = rb.rom' – Siyual

+0

Каков ваш желаемый результат? – hansmei

+1

@hansmei Он уже имеет желаемый результат в вопросе. – Siyual

ответ

1

Я думаю, что это то, что вы ищете.

Он использует LEFT JOIN, так что он вернет строку от ROM_BEHANDLING, даже если в строке LEGE_ROM нет соответствующей строки.

SELECT lr.ansattnr, lr.rom, rb.behandling 
FROM ROM_BEHANDLING rb 
INNER JOIN LEGE_ROM lr on lr.rom = rb.rom 
GROUP BY lr.rom 
HAVING rb.behandling = 'konsultasjon'; 

Рабочий пример here

+0

Есть ли способ удалить повторяющиеся экземпляры L100, так что L100 k10 konsultasjon покажет только один раз в таблице? – slimmey

+0

@slimmey Да, вы можете сделать это, добавив предложение GROUP BY. Я обновил ответ. – Donal

+0

Обновление дает мне следующую ошибку в моем phpMyAdmin (версия клиента 5.1.73): «# 1064 - У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования около 'WHERE rb.behandling =' konsultasjon 'LIMIT 0, 30' в строке 5 " – slimmey

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