2014-12-07 3 views
0

Мне нужна помощь в выполнении нескольких объединений, им это не очень хорошо, и вам нужен способ заставить его работать.Использование данных из 5 разных таблиц в запросе mysql

Существует 5 таблиц с данными и необходимо получить данные для вывода из каждой таблицы. Существует человек, посещение, центр, дата и таблица. В таблице посещения есть идентификаторы для извлечения данных из других таблиц. Я хочу использовать эту таблицу, чтобы получить статус человека, посмотреть, какую дату они посетили, в каком центре, свое имя и кто их видел. (Я надеюсь в этом есть смысл).

Вывод должен выглядеть, надеюсь, как это:

> Person FirstName 
> Person LastName 
> Seen By 
> Date 
> Center 
> Status 

EDIT // Вот макет того, что я хочу видеть mockup

Ive уже читать на сводные таблицы и предпочли бы не использовать что. Ive создал SQL скрипку здесь: http://www.sqlfiddle.com/#!2/d19d2c

EDIT // Ive удалось написать половину запрос, но я сомневаюсь, что это работает, но я думаю, его отправной точкой.

SELECT d.date 
    , p.Firstname 
    , p.Lastname 
    , c.centername 
    , v.status 
    , s.FirstName 
    , s.LastName 
    FROM visit v 
    LEFT 
    JOIN date d 
    ON v.dateID = d.id 
    LEFT 
    JOIN centerName c 
    ON c.centerID = c.id 

Спасибо!

+0

Вы упомянули получение данных, что предполагает 'SELECT', но ваша скрипка показывает' INSERT'. Какой результат вы ищете? – Sablefoste

+0

Извините, я забыл поставить запрос, который я пытался сделать, но did not work – user3411002

+0

Проверить править. @SableFoste ive описал в вопросе тип вывода, который мне нужен. – user3411002

ответ

0

Из вашей структуры таблицы, казалось бы, вы хотите запрос, как это:

SELECT 
    d.date, 
    CONCAT_WS(' ', p.Firstname ,p.Lastname) AS "Person", 
    v.status, 
    CONCAT_WS(' ', s.FirstName, s.LastName) AS "Seenby", 
    c.centername 

FROM visit v 
JOIN person p ON v.PersonID = p.ID 
JOIN seenby s ON v.seenbyID = s.ID 
LEFT JOIN date d ON v.dateID = d.id 
LEFT JOIN center c ON v.centerID = c.id 

Последние два присоединяется должен быть, может быть нормальным внутренние соединения и не осталось объединений, корректировать по мере необходимости.

Функция CONCAT_WS() объединяет свои параметры в строку, используя значение первого параметра в качестве разделителя (пробел в этом случае).

Sample SQL Fiddle

+0

Спасибо, что именно мне нужно, но есть способ присоединиться к имени и фамилии вместе, чтобы он просто появился в одном столбце? edit // Я вижу, что сделал это haha ​​спасибо много – user3411002

+0

@ user3411002 Да, я просто обновил запрос, основываясь на вашем примере вывода. – jpw

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