我有一个页面,这个页面有一个所有者。
我想选择此页面的成员。
问题是,如果是页面所有者登录(页面是如何创建的),我想首先(并且只为他)显示block=1的成员以进行join autorization。
所以我有:
CREATE TABLE `page` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user` INT(11) UNSIGNED NOT NULL, // who created the page.
`title` varchar(40),
`privado` tinyint(1) NOT NULL DEFAULT '0',
)
和页面成员(加入页面的成员):
CREATE TABLE IF NOT EXISTS `page_members` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`user` INT(11) UNSIGNED NOT NULL, // who is joining
`member` INT(11) UNSIGNED NOT NULL, // page id
`block` tinyint(1) NOT NULL DEFAULT '0', // block 1 = need autorization
FOREIGN KEY (`member`) REFERENCES page (`id`)
)
假设我有一个用户1创建的页面,它有成员。如果登录者是页面所有者(页表,用户),我想首先选择block=1的成员。如果不是页面所有者,我只想选择block=0的成员。
所以我试着:
select p.user, p.title, pm.user, pm.block from page_members pm
left join page p on pm.member = p.id
where pm.member = 100 // show members from page 100
.
and p.user = 1 // from here I'm not sure what to do,
I'd like to select and show first the members with block = 1
but only if p.user = 1 (the page owner).
例如,如果p.user=2,则他不是页面所有者,因此不使用块1显示成员,只显示块0。
有什么想法吗?
2条答案
按热度按时间yfwxisqw1#
你可以用
IF()
围绕一个条件使它依赖于其他条件。yebdmbv42#
可以在联接后筛选结果:
有了订单,你就有你想要的那种了