2

我真的似乎无法掌握 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_valuemeta_keybid_name”,例如......以及其他值。

TABLE
id | meta_key | meta_value
1    bid_name    Max

IDID我需要将初始表连接到...

对此,我真的非常感激!

4

3 回答 3

0

有一些方法可以使用加入:
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等于 this id),那么您将获得几个具有此 pet_id 的记录(具有不同的meta_keyand 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'

在这种情况下,除了一件事之外,行为将是相同的——即使没有任何idapet_id结果将包含来自wp_postmetathis的记录pet_id。但是meta_keymeta_value在这种情况下将是null.

于 2012-11-07T18:34:45.867 回答
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;
于 2012-11-07T18:00:44.463 回答
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

如果这些值不一定存在于元表中,请使用 aLEFT OUTER JOIN代替,它将返回null缺少的任何内容。

于 2012-11-07T17:59:08.277 回答