我试图查询wordpress mySQL数据库,其中与每个用户相关的值分布在不同的行中(只有上帝知道他们为什么这样做,为什么他们只是将所有用户信息放在一行上)
例如
ID USER_ID FIELD_ID VALUE
1 1 2 my name is paul smith
2 1 3 books
3 1 4 loggedin
4 1 5 state=busy
5 2 2 my name is big boy
5 2 3 pens
6 2 4 offline
7 2 5 state=idle
在这里,您可以看到每行根据同一用户的FIELD_ID具有不同的含义
FIELD_ID=2 contains the user name
FIELD_ID=3 contains mean what they bought
FIELD_ID=4 means logged in
FIELD_ID=5 is busy or idle
我需要制作一个查询,它将返回所有LOGGED IN和STATE = IDLE的用户并购买BOOKS(或购买一些其他项目,如钢笔,无论他们想搜索什么)
所以我开始使用这个php语句
$find="pens";
$q = "SELECT * FROM table
WHERE FIELD_ID='4' AND VALUE='loggedin'
AND FIELD_ID='5' AND VALUE='idle'
AND USER_ID IN
(SELECT USER_ID FROM table WHERE FIELD_ID ='3' AND VALUE LIKE '%$find%')
但我不认为这会起作用,因为怎么可能 FIELD_ID =' 4' AND VALUE ='已登录' AND FIELD_ID =' 5' AND VALUE ='空闲'所有这些都是因为它们在不同的行上。
有人知道如何制作一个mySQL语句吗?
答案 0 :(得分:0)
你可以使用自我加入
SELECT distinct a.user_id
FROM table a
inner join table b on a.user_id = b.user_id and b.field_id = 5 and b.value='idle'
inner join table c on a.user_id = c.user_id and c.field_id = 4 and c.value = 'loggedin'
where a.field_id=3 and a.value='BOOK'