2016-08-01 89 views
-2

我有SQLite数据库中的3个表 - 产品,CategoryProduct_MM(产品类别)和Facing(产品的顺序)。 Products表包含PrdID(INTEGER),CategoryProduct_MM包含CategoryID(INTEGER)和PrdID(INTEGER),Facing包含CategoryID,PrdID和Order(全部为INTEGER)。如果产品的类别中面对表中,我必须基于这样结合两个SQLite查询

SELECT p.* FROM Products p INNER JOIN Facing f ON p.PrdID = f.PrdID WHERE f.CategoryID = ? ORDER BY f.'Order'; 

在另一种情况下,订购产品分类我必须从像这样的产品

SELECT p.* FROM Products p INNER JOIN CategoryProduct_MM cp ON p.PrdID = cp.PrdID WHERE cp.CategoryID = ?; 

选择如何在一个查询它们结合起来?

+0

帮助我们帮助您 - 请分享表结构,一些示例数据,你想获取该样品的结果。 – Mureinik

+0

Sql union声明可以在这里帮助 – user1050134

+0

@Mureinik添加了详细信息 –

回答

0

这里是正确的查询

SELECT p.* 
FROM Products p 
INNER JOIN CategoryProduct_MM cp 
ON (p.PrdID = cp.PrdID AND cp.CategoryID = ?) 
LEFT JOIN Facing f 
ON (f.PrdID = cp.PrdID AND f.CategoryID = cp.CategoryID) 
ORDER BY f.'Order';