2016-10-26 10 views
0

私は3つのテーブル、すなわちusers,galleries,ordersを持っています。構造は簡単です。両方galleriesordersは私がgalleriesに存在しなくordersにあるものだけusersのリストで結果セットを必要とするclient_idという名前の列がusers の外部キーとして機能しています。 私は、次の試してみましたが、それは私にLaravel - Mysqlどこにいないか

select 
    `galleries`.`client_id`, 
    `galleries`.`path`, 
    `users`.`first_name`, 
    `users`.`last_name`, 
    users.id, 
    `orders`.`order_number` 
from 
    `galleries` 
    inner join 
    `users` 
    on 
     `users`.`id` = `galleries`.`client_id` 
    inner join 
    `orders` 
     on 
     `orders`.`client_id` = `users`.`id` 
where 
    `galleries`.`session_id` is null 
    and 
    `galleries`.`is_video` = '1' 
    and 
    `galleries`.`is_thumb` = '0' 

答えて

0

で上位コードによって生成orders

$users = DB::table('galleries') 
     ->join('users', 'users.id', '=', 'galleries.client_id') 
     ->join('orders', 'orders.client_id', '=', 'users.id') 
     ->select('galleries.client_id', 'galleries.path', 'users.first_name', 'users.last_name', 'orders.order_number') 
     ->where('galleries.session_id', null) 
     ->where('galleries.is_video', '1') 
     ->where('galleries.is_thumb', '0') 
     ->get(); 
    dd($users); 

クエリに存在するすべてのユーザーを与えるこれはどう?それが動作するかどうかわからない:

DB::table('galleries') 
    ->join('users', 'users.id', '=', 'galleries.client_id') 
    ->select('galleries.client_id', 'galleries.path', 
      'users.first_name', 'users.last_name') 
    ->where('galleries.session_id', null) 
    ->where('galleries.is_video', '1') 
    ->where('galleries.is_thumb', '0') 
    ->whereNotIn('client_id', function($query) { 
     $query->select('client_id') 
       ->from('orders'); 
    }) 
    ->get(); 

あなたの条件に応じて、あなたがを述べたので、私はorders.order_numberを削除したユーザが、順序を持っていないそれらのギャラリーを選択します。クライアントのための注文がない場合、どのように注文に参加するのですか?

私は単にwhereNotInを追加しましたが、それは "どこにclient_idが注文テーブルに存在しないか"と読みます。

+0

ありがとう、それは私が必要としたものです – baig772

関連する問題