2

私は本当にSQL結合などのsytanxを把握できないようです...だから、これについて助けが必要です(これは非常に簡単だと思います)

次のように問い合わせbid_tagています。

SELECT paid_date, term, pet_id FROM bid_tag WHERE active = 1

そして、 を使用しpet_idて、別の table から情報を取得する必要がありますwp_postmeta。ここで、テーブルは実際にはmeta_key meta_value構造 (WordPress) 内にあります...

したがって、たとえば「bid_name」を取得する必要があります...他の値の中でもmeta_valuemeta_key

TABLE
id | meta_key | meta_value
1    bid_name    Max

それIDは、最初のテーブルを接続する必要があるのと同じIDです...

ほんとうにありがとう!

4

3 に答える 3

0

idとの両方に参加してmeta_key、目的の値を選択します。メタテーブル内の他のキーにも対応する値が必要な場合、1つの方法は複数回結合することです。

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てください。不足しているものはすべて返されます。

于 2012-11-07T17:59:08.277 に答える
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

join を使用するにはいくつかの方法があります:
1) useinner joinまたは 同様に just 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_idthis と等しい存在する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'

idこの場合、動作は 1 つのことを除いて同じになります。結果に aがない場合でも、 thispet_idのレコードが含まれます。しかし、この場合は になります。wp_postmetapet_idmeta_keymeta_valuenull

于 2012-11-07T18:34:45.867 に答える