2017-01-21 12 views
0

ps_shopテーブルに複数のショップがあり、店舗の一部にテーブルがありますが、ps_shopテーブルの店舗は、ユーザーIDとショップ名でに挿入するのに必要なテーブルにありません。ここにショップ名ps_shopテーブル=店舗名ps_storeinfoテーブル。ここで私はこのためのSQLクエリを書いていると私はすべてのデータを取得しているが、複数のユーザーが複数のユーザーを持っている場合は、複数のユーザーが私のSQLによって来ています。 1つのショップに1人のユーザーが必要です。内部結合と左結合クエリでさらに行がある場合、1つの行を表示するにはどうすればよいですか?

ps_ employee_shopテーブルユーザーは、ショップIDのショップベースに割り当てられます。そしてps_ employeeでは、ユーザーのためのテーブルです。これはprestashop 1.6用です。

私のSQLは以下のとおりである:

$table_prefix = _DB_PREFIX_; 

'SELECT ps.*, pe.email, pe.firstname, pe.lastname, pes.id_employee,psi.storename 
     FROM '.$table_prefix.'shop ps 
     LEFT JOIN '.$table_prefix.'storeinfo psi ON ps.name = psi.storename 
     INNER JOIN '.$table_prefix.'employee_shop pes ON ps.id_shop = pes.id_shop 
     INNER JOIN '.$table_prefix.'employee pe ON pes.id_employee = pe.id_employee where ps.id_shop <>1 and pe.id_employee <>1 
     GROUP BY pes.id_employee 
     '; 

出力画像は、次のとおりです。

まあ

enter image description here

+0

「店舗主キーによるグループ」を追加するだけで動作するはずです –

+0

ありがとうございます。あなたの提案は機能しています。 –

+0

この編集でこの質問の書式を修正しました。 – mertyildiran

答えて

0

、複数のエンティティが持つJOINの右側のテーブルに存在する場合一致するONキーを照合すると、任意のリレーショナルDBエンジンは、右側に一致するエンティティごとに1行を返し、JOIN句の左側を複製します。

説明したシナリオでは、返すユーザーを決定する必要があります。アルファベット順に並べ替えられた最初のものは?最近作成されたもの?

答えに基づいて、相関サブクエリを持つJOINを使用する必要があります。ここid_employeeの最高値で、従業員を取得するための例を以下に示します。

SELECT 
    ps.*, pe.email, pe.firstname, pe.lastname, pes.id_employee,psi.storename 
FROM 
    '.$table_prefix.'shop ps 
    LEFT JOIN '.$table_prefix.'storeinfo psi ON ps.name = psi.storename 
    INNER JOIN (
     SELECT 
      pe.email, pe.firstname, pe.lastname, pes.id_employee 
     FROM 
      '.$table_prefix.'employee pe 
      '.$table_prefix.'employee_shop pes ON pes.id_employee = pe.id_employee 
     WHERE 
      pe.id_employee <> 1 
      AND ps.id_shop = pes.id_shop 
     ORDER BY 
      pe.id_employee DESC 
     LIMIT 1 
    ) 
WHERE 
    ps.id_shop <>1 

あなただけの1つのレコードが重複しないようにするために、従業員の結果のリストを制限しているもの、これは本当にやっている見ることができるように。この場合、リストはid_employeeによって順序付けられますが、正しい順序付けは実装する必要があるビジネスロジックに依存します。

+0

ボスが作動しない........... –

関連する問題