我是SQL新手,我想知道我的语法或逻辑有什么问题。我有自己的表clients
喜欢
id | name | postid | sord |
--------------------------------------------------------
1 Paul Allen 19 1
2 McDermot 8 2
并且该表中的postid
列与id
表中的wp_posts
列相同,如
id | ... | ... | guid | ...
--------------------------------------------------
1 ... ... images/somepic.jpg ...
.
.
8 ... ... images/mypic.gif ...
.
.
.
19 ... ... images/thatpic.png ...
.
.
.
我想要返回的是一个像
这样的行表id | name | postid | sord | guid
--------------------------------------------------------
1 Paul Allen 19 1 images/mypic.gif
2 McDermot 8 2 images/thatpic.png
这样我就可以使用相应的图像路径来构建我的页面。我相信这种情况的方法是完全外连接。我的PHP就像
global $wpdb;
$allCients = $wpdb->get_results("
SELECT clients.id, clients.name, clients.postid, clients.sord, wp_posts.guid
FROM clients
FULL OUTER JOIN wp_posts
ON clients.postid=wp_posts.id
ORDER BY clients.sord
");
$numClients = count($allCients);
但由于某种原因,返回0结果(即$numClients
是0
)而不是预期的2.我做错了什么?
答案 0 :(得分:1)
MySQL不支持Style
。但如果你有适当的外键关系,你无论如何都不需要它。例如,如果您想要所有客户,即使是那些没有帖子的客户:
UITableViewCell
答案 1 :(得分:0)
如果你正在使用MySQL,则没有FULL OUTER JOIN
。您可以做的是LEFT OUTER JOIN
,UNION
和RIGHT OUTER JOIN
。这个堆栈溢出答案有一个例子:
https://stackoverflow.com/a/10137216/4629105
select * from A as a
left outer join B as b on a.col = b.col
union
select * from A as a
right outer join B as b on a.col = b.col
答案 2 :(得分:0)
在这种情况下,您甚至不需要LEFT JOIN
。
只需像其他提到的那样取出FULL OUTER
。
所以你的代码是:
global $wpdb;
$allCients = $wpdb->get_results("
SELECT clients.id, clients.name, clients.postid, clients.sord, wp_posts.guid
FROM clients
JOIN wp_posts
ON clients.postid=wp_posts.id
ORDER BY clients.sord
");
$numClients = count($allCients);