0

したがって、次のような do_stock_movement というテーブルがあります。

stock_movement_id sm_number sm_source_id sm_destination_id
15164b86a7533d 145 1516478840ee29 151644d8bd63f2
15166b89d1a9fc 194 15165c481bd9d0 151659e632cd48

sm_source_idsm_destination_id両方の参照プロダクト ポイントは、 に格納されていdo_product_pointsます。

次の SQL クエリを使用しています。

SELECT * FROM do_stock_movement
内部結合 do_product_points ON product_points_id = sm_source_id
WHERE sm_number = '145'

にはdo_product_points、 というフィールドがありpp_nameます。pp_nameとの両方sm_source_idに対応する が必要sm_destination_idです。

pp_nameただし、上記のクエリはfor sm_source_id、またはsm_destination_id結合されたフィールドをそれに変更した場合のみを返します。

pp_nameとの両方sm_source_idに対応する を返す SQL クエリはsm_destination_idどれですか?

これが明確であることを願っています。そうでない場合は質問してください!

4

3 に答える 3

1

JOINこのテーブルは、次do_product_pointsの場合にもう一度sm_destination_id:

SELECT 
  s.pp_name AS SourcePoint,
  d.pp_name AS DestinationPoint,
  ...
FROM do_stock_movement AS m
INNER JOIN do_product_points s ON s.product_points_id = m.sm_source_id
INNER JOIN do_product_points d ON d.product_points_id = m.sm_destination_id
WHERE m.sm_number = '145'
于 2013-04-11T13:55:08.053 に答える
1

source_id で 1 回、destination_id で 1 回、product_points テーブルに 2 回参加する必要があります。

SELECT * FROM do_stock_movement move
INNER JOIN do_product_points source ON source.product_points_id = move.sm_source_id
INNER JOIN do_product_points dest ON dest.product_points_id = move.sm_destination_id
WHERE sm_number = '145'
于 2013-04-11T13:57:16.337 に答える
1

2 回参加し、エイリアスを使用する必要があります。

SELECT *, Src.pp_name, Dst.pp_name FROM do_stock_movement
  INNER JOIN do_product_points as Src 
      ON Src.product_points_id = sm_source_id
  INNER JOIN do_product_points as Dst 
      ON Dst.product_points_id = sm_destination_id
于 2013-04-11T13:56:03.203 に答える