SQL根据初始表的ID加入另一个表

时间:2012-11-07 17:47:43

标签: mysql sql database wordpress

我真的无法理解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 ...

我真的很感激!

3 个答案:

答案 0 :(得分:0)

加入idmeta_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_keymeta_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_idmeta_key将为meta_value