У меня есть приложение для Android, у которого есть 2 таблицы, одна таблица хранит сообщения, а другая таблица сохраняет изображения сообщений, если у них есть изображение, изменения не все сообщения будут иметь изображения, если в сообщении есть изображение, его первичный ключ будет сохранен в таблице внешних ключей, при загрузке сообщений мне нужно получить все сообщения с изображением или нет, а затем проверить в таблице изображений, чтобы увидеть, какие сообщения имеют изображения и добавить изображения к сообщениям ниже, представляет собой графический обзор моих таблиц
Почтовый стол
`|post_id |post | post_description| |--------|-----|-----------------| | | | |`
Таблица изображений
`|img_id |fk_postID | imagePath | |--------|----------|-----------------| | | | |`
Я мог бы использовать такое соединение, как Query = "SELECT post_id, post, post_description, imagePath FROM PostTable,
ImageTable, Where PostTable.post_id = ImageTable.fk_postID;Query = "SELECT post_id, post, post_description, imagePath FROM PostTable,
ImageTable, Where PostTable.post_id = ImageTable.fk_postID;
но этот запрос только возвращает сообщения с изображениями и сбрасывает сообщения о сообщениях без изображений. Как я могу получить все сообщения с изображением или нет? Заранее спасибо.
хорошо, вы спросили, так что дайте этому вихрь, посмотрите, нравится ли вам выход
SELECT pt.post_id, pt.post, pt.post_description, im.imagePath FROM PostTable pt left join ImageTable im on im.fk_postID=pt.post_id
Это приведет к тому, что вы вернетесь на правильный стол (ImageTable) тех сообщений, у которых нет изображений.
Использует псевдонимы таблицы ( pt
и im
). Это помогает быть явным, в какой таблице столбцы берутся в первой строке, если в обоих случаях есть общие имена столбцов, а также немного меньше ввода.
Непроверенные
ссылка Mysql Left Joins
Попробуйте использовать Left join, и это приведет к появлению всех записей из левой таблицы и соответствующих записей из правой таблицы.
SELECT posttable.postid,posttable.post,posttable.postdescription, imagetable.imageid,imagetable.fkpostid,imagetable.imagepath FROM posttable LEFT JOIN imagetable ON posttable.postid=imagetable.fkpostid ORDER BY posttable.postid;
Код должен выглядеть так.