0

注意:私は直前に質問をしました(バージョンフィールドが最近のものであるデータベースから選択する方法)、それはうまく機能しています。複製品ではありません。

SELECT p.* FROM `pricing` p 
JOIN (SELECT `distributor`,MAX(`version`) AS ver 
      FROM `pricing` GROUP BY `distributor`) mx 
  ON mx.ver=p.version AND p.distributor = mx.distributor

上記のクエリを使用して、ディストリビューターが最新バージョンを持っている価格表からすべての詳細を選択できます.[ディストリビューターは異なるバージョンを持っています. 最新バージョンを選択するだけです]。product_picker という別のテーブルがあります。価格表からデータを選択する必要があるだけです。価格表のコード = product_picker のコードです。以下のコードを使用しました。

SELECT p.* FROM `pricing` p,pk.* 
FROM `product_picker` 
JOIN (SELECT `distributor`,MAX(`version`) AS ver 
      FROM `pricing` GROUP BY `distributor`) mx 
  ON mx.ver=p.version AND p.distributor = mx.distributor 
INNER JOIN `product_picker` pk ON p.code=pk.code

しかし、それがうまくいかないことはわかっています。私はJOIN句を学んでいます。コードを改善するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

メカニズムは非常に単純です。

SELECT p.*, pk.*
FROM 
    `pricing` p 
        JOIN (
            SELECT 
                `distributor`,
                MAX(`version`) AS ver 
            FROM `pricing` 
            GROUP BY `distributor`
        ) mx ON mx.ver = p.version AND p.distributor = mx.distributor
        JOIN `product_picker` pk ON pk.code = p.code -- the join has to be added after the other one, and the ON clause has to make it clear for SQL that the code is the criteria
于 2013-11-12T06:13:08.610 に答える