我有两张表,如下;
表A
4c4fedf7 OMoy3Hoa
4c4fedf7 yiWDGB4D
broe4AMb A9rLRawV
broe4AMb mi9rLmZW
nhrtK9ce yEsBoYLj
rEEtK9gt A9rLRawV
rEEtK9gt mi9rLmZW
rEEtK9Hh A9rLRawV
rEEtK9Hh msBWz8CQ
表B
mr23wsSW formb 4c4fedf7
OBqSU9pm forma broe4AMb
UvYOMvLe formc broe4AMb
Bhc5yfr4 forma nhrtK9ce
R9vZJ5Kd formb nhrtK9ce
Bhc5y629 forma rEEtK9gt
Bhc5y488 forma rEEtK9Hh
Bhc5y489 formb rEEtK9Hh
在表格中,我有prodid
和tagid
。它是一个复合主键。 prodid
充当外键,指向tableb。在tableb中,我有prod
,form
和link
。 tablea的prodid
指向tableb的link
。我想要的是,如果我将tablea的tagid
作为数组之类的输入,比如A9rLRawV,mi9rLmZW
,我希望输出为;
OBqSU9pm
UvYOMvLe
Bhc5y629
这是因为,我想要prod,它在表格中的相应条目(prodid)中同时包含A9rLRawV
和mi9rLmZW
。
我有一个像<; p>这样的查询
SELECT b.prod AS links
FROM tablea a
INNER JOIN tableb b ON a.prodid = b.link
WHERE a.tagid IN ('A9rLRawV','mi9rLmZW')
GROUP BY b.prod
但是,它返回结果,如;
OBqSU9pm
Bhc5y629
Bhc5y488
我该如何解决这个问题?我使用PHP + MySQL。
答案 0 :(得分:3)
在标记时,您错过了表格中的一个条目:
因此,与prodid rEEtK9Hh对应的条目也将显示。
但这应该是你期望的结果:
SELECT b.prod AS links
FROM tablea a
RIGHT JOIN tableb b ON a.prodid = b.link
WHERE a.tagid IN ('A9rLRawV','mi9rLmZW')
GROUP BY b.prod
输出:
| prod |
|----------|
| BHc5y488 |
| BHc5y489 |
| BHc5y629 |
| OBqSU9pm |
| UvYOMvLe |
答案 1 :(得分:0)
在你的表中,一个表应该有一个主键,例如表一个集prodid作为主键,所以不允许重复记录,所以在表b之后,链接作为外键工作,你将得到结果