2012-06-10 6 views
1

У меня возникают проблемы при объединении слева с SQLite.LEFT JOIN SQLite

структура таблиц

contacts: id_c, first_name, last_name, photo_link 
messages: id_msg, id_sender, id_recipient, utimestamp, message, chatID 

Я делаю запрос следующим образом:

SELECT * FROM messages m 
    LEFT OUTER JOIN contacts c ON (c.id_c=m.id_sender) 
    WHERE m.chatID=26 

Этот запрос возвращает значения из таблицы сообщений.
Но возвращает значение null для таблицы контактов.

Я пробовал несколько способов и не могу решить эту проблему. Любые предложения по его решению?

+1

Почему, по вашему мнению, он не должен возвращать NULL? Пожалуйста, напишите три вещи: a) несколько строк примера в каждой таблице, которые демонстрируют проблему; b) результат выполнения запроса, когда ваши таблицы содержат только эти строки примера; c) то, что вы считали результатом. Пожалуйста, также подумайте о размещении этой информации в http://sqlfiddle.com, чтобы нам было легче проверить себя. –

+1

Я создал пример в [sqlfiddle] (http://sqlfiddle.com/#!7/f726e/2) Я не знал этого сайта. Спасибо за предложение. В этом случае он отлично работает, но не работает так же в инструментах разработчика Chrome. Что должно быть? – sandrosss

+0

Возможно, это ошибка в SQLite, иногда это происходит (другая ошибка LEFT JOIN: http://comments.gmane.org/gmane.comp.db.sqlite.general/73075 – biziclop

ответ

0

Возвращающиеся обнуляет для столбцов из таблицы контактов именно то, что я ожидал бы от рабочего LEFT JOIN в том случае, когда не существует контакт которого id_c совпадает с id_sender для chatID 26. Вы дважды проверили у вас есть такой контакт в таблице contacts?

+1

Я создал пример в [ sqlfiddle] (http://sqlfiddle.com/#!7/f726e/2). Он отлично работает в этом случае, но не работает так же в инструментах разработчика Chrome. Что должно быть? – sandrosss

1

Проблема была решена. Вероятно, была ошибка. После тестирования в SQL Fiddle я понял, что он работает без проблем. Спасибо за Ваше внимание.

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