从多个表中获取数据SQLite

时间:2015-11-10 15:23:11

标签: php android mysql sqlite

我有一个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;

这样的联接

但是此查询仅返回包含图片的帖子并伪造没有图片的帖子,如何才能将所有帖子与图像一起使用?提前谢谢。

2 个答案:

答案 0 :(得分:1)

好的,你问,所以给它一个旋转,看看你是否喜欢输出

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)。

使用表别名ptim)。这有助于明确哪一列来自第一行,以防两者中有共同的列名,加上少一点的输入。

未测试

参考Mysql Left Joins

答案 1 :(得分:0)

尝试使用左连接,这将导致左表中的所有条目和右表中的匹配条目。

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; 

代码应该是这样的。

http://www.w3schools.com/sql/sql_join_left.asp