2012-06-18 3 views
1

У меня есть несколько таблиц, к которым я пытаюсь присоединиться.SQL Присоединиться к тому же столбцу, разные таблицы, разные значения

Я просто не знаю способ делать то, что мне нужно, это немного трудно объяснить, так что я покажу вам запрос до сих пор:

SELECT exp_channel_data.field_id_102, 
     exp_channel_data.field_id_104, 
     exp_channel_data.field_id_126, 
     exp_channels.deft_status 
FROM exp_channel_data 
    INNER JOIN exp_channels 
    ON exp_channels.channel_id = exp_channel_data.channel_id 
    INNER JOIN exp_channel_titles 
    ON exp_channels.channel_id = exp_channel_titles.channel_id 
WHERE exp_channels.channel_id = 18 
AND exp_channel_titles.channel_id = 19 

бит, что не работает is AND exp_channel_titles.channel_id = 19

Проблема в том, что я возвращаю результат 0. Тем не менее, я знаю, что в обеих колонках есть данные. Хотя они представляют собой совершенно разные наборы данных.

exp_channels

содержит все данные, такие как День, время, цена и т.д.

exp_channel_titles

содержит всю информацию о названии

Но я необходимо объединить две ей, так что я могу получить результирующий набор:

«Название, день, учителя, Time» и т.д.

Так что я был просто интересно, если кто-то решение о том, как это сделать?

Спасибо!

+0

Какие результаты вы хотите получить? Я думаю, что этот запрос показывает 0 строк ... –

+1

Что вы имеете в виду, не работает? Ваш запрос не возвращает то, что вы хотите? Это не кажется слишком сложным, поэтому вам стоит попытаться объяснить ... –

+0

Обновлен вопрос, чтобы быть более понятным – DarkMantis

ответ

2

Потому что вы используете внутреннее соединение, поэтому все channel_id одной строки должны быть одинаковыми.

Возможно, вы имели в виду OR?

SELECT exp_channel_data.field_id_102, 
     exp_channel_data.field_id_104, 
     exp_channel_data.field_id_126, 
     exp_channels.deft_status 
FROM exp_channel_data 
    INNER JOIN exp_channels 
    ON exp_channels.channel_id = exp_channel_data.channel_id 
    INNER JOIN exp_channel_titles 
    ON exp_channels.channel_id = exp_channel_titles.channel_id 
WHERE exp_channels.channel_id = 18 
OR exp_channel_titles.channel_id = 19 

ИЛИ вы можете использовать IN.

WHERE exp_channels.channel_id IN (18, 19) 
+0

Извините, я думаю, что это была моя ошибка, что я не объяснил это правильно, но это не то, что мне нужно, я обновил вопрос, чтобы попробовать и объяснить немного лучше. – DarkMantis

+0

@DarkMantis. Вы не получаете результат, потому что channel_id может быть 18 и 19 в то же время, не так ли? – xdazz

+0

Да, мне нужно получить channel_id из exp_channels, где id равен 18 И мне нужно получить channel_id из файла exp_channel_titles, где идентификатор равен 19. Не знаю, возможно ли это – DarkMantis

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