我想把两个查询放在一起;一个来自我的posts
表格,另一个来自我的store_products
表格,并将结果显示在同一页面上。mySQL多选:1复杂1简单
,所以我想利用这个......
SELECT
p.id AS pid
, p.uid
, p.title
, p.created_at
, u.id AS uid
, u.username
, u.avatar
, f.following
, l.uid AS liked
, u2.username AS source_username
, u2.avatar AS source_avatar
, u2.created_at AS source_created_at
FROM posts p
LEFT JOIN users u ON p.uid=u.id
LEFT JOIN posts_likes l ON l.pid=p.id
LEFT JOIN follow f ON u.id = f.following
LEFT JOIN posts p2 ON p.source_hash = p2.hash
LEFT JOIN users u2 ON u2.id = p2.uid
WHERE (f.user=2 OR p.uid=2)
GROUP BY p.id ORDER BY p.id DESC
,并把它与这样的事情...
SELECT name, price FROM store_products WHERE uid=2
我试过多次SELECT
陈述,UNION
,在那里我” d通过使用NULL
弥补cols的差异,我试过LEFT
,RIGHT
和INNER
联接,但所有这些操作都是将产品信息添加到其他邮政行中,而不是创建se为每个产品分配行。
的结果集,我找的就是类似于这个
[0] Post 1
[1] Post 2
[2] Product 1
[3] Post 3
[4] Product 2
等等
编辑:回答问题。两个表之间的唯一关系是用户标识,否则它们是完全独立的。我想为访问者提供帖子和产品的列表,并且我试图在一个查询中执行此操作以节省服务器负载,并且将它们放在同一列表中而不是单独的列表中。
帖子和产品之间是否有任何关系?为什么'Post 2'后的产品1? – Barmar 2014-11-08 18:34:26
你的问题不是很清楚。帖子和产品之间有什么关系?你能提供一些样本数据吗? – abl 2014-11-08 18:34:41
'SELECT ...,sp.name,sp.price ... ... LEFT JOIN users on ON p.uid = u.id LEFT JOIN store_products AS sp ON(sp.uid = u.uid)'will do你问:为每个产品添加行,这两个额外的列中的每一列都会报告产品的名称和价格(或NULL)。 **但是,如何显示这个**,它不是MySQL的辖区。您需要添加一些关于您用来制作您的“网页”的内容,或许还有一些问题标签。很可能你应该*做的是将这两个查询分开,并将它们以不同的方式集成到你选择的CMS中。 – LSerni 2014-11-08 18:37:44