我真的无法理解SQL连接的sytanx等等......所以我需要一些帮助(我觉得很简单)
我正在查询bid_tag
如下:
SELECT paid_date, term, pet_id FROM bid_tag WHERE active = 1
我需要使用pet_id
然后从另一个表wp_postmeta
中获取一些信息,其中表实际上是meta_key
meta_value
结构(WordPress)。 ..
所以我需要抓住meta_value
“bid_name”的meta_key
,例如......以及其他值。
TABLE
id | meta_key | meta_value
1 bid_name Max
我需要将ID
连接到初始表格所需的ID
...
我真的很感激!
答案 0 :(得分:0)
加入id
和meta_key
以选择所需的值。如果您想要与元表中的其他键一起使用的值,则一种方法是多次连接:
SELECT bt.paid_date, bt.term, bt.pet_id,
bn.meta_value as bidname,
bo.meta_value as bidother
FROM bid_tag bt
INNER JOIN wp_postmeta bn on bn.id = bt.pet_id and bn.meta_key = 'bid_name'
INNER JOIN wp_postmeta bo on bo.id = bt.pet_id and bo.meta_key = 'bid_other'
WHERE bt.active = 1
如果值不一定存在于元表中,请使用LEFT OUTER JOIN
代替它,它将返回null
以查找缺少的内容。
答案 1 :(得分:0)
以下是您的查询的结果:
SELECT B.meta_key, B.meta_value, A.pet_id
FROM bid_tag A
JOIN wp_postmeta B
ON B.id = A.pet_id;
答案 2 :(得分:0)
有一些方法可以使用join:
1)使用inner join
或同样只使用join
:
select
--some columns
from bid_tag
join wp_postmeta on
bid_tag.pet_id = wp_postmeta.id
where
wp_postmeta.meta_key = 'bid_name'
结果只包含pet_id
中存在wp_postmeta
的记录。另一个将被省略。如果wp_postmeta
有两个记录具有相同的id
(并且存在pet_id
等于此id
),那么您将获得一些带有此pet_id的记录(但是与meta_key
和meta_value
不同
2)使用left join
:
select
--some columns
from bid_tag
left join wp_postmeta on
bid_tag.pet_id = wp_postmeta.id
where
wp_postmeta.meta_key = 'bid_name'
在这种情况下,行为将是相同的,除了一件事 - 即使id
没有任何pet_id
,结果将包含来自wp_postmeta
的记录{{1} }}。但在这种情况下,pet_id
和meta_key
将为meta_value
。