Was ich versuche, ist folgendes zu erreichen:WhereNotIn Subquery
Ich möchte überprüfen, ob es einen Datensatz mit dem gleichen client_code
ist jedoch mit einer niedrigeren/verschiedenen campaign id
. Ich bin mit einer Unterabfrage für jetzt und ich versuchte es mit einem als gut zu tun kommen, aber ich konnte die Logik arbeitet
nicht bekommen Dies ist, was ich habe jetzt:
$oDB = DB::table('campaigns AS c')
->select(
'c.id AS campaign_id',
'cc.id AS campaign_customer_id'
)
->join('campaign_customers AS cc', 'cc.campaign_id', '=', 'c.id')
->where('c.status', '=', ModelCampaign::STATUS_PLANNED)
->where('c.scheduled', '=', 1)
->whereRaw('c.scheduled_at <= NOW()')
->where('cc.status', '=', ModelCampaignCustomer::STATUS_INVITE_EMAIL_SCHEDULED)
->whereNotIn('cc.client_code', '=', function ($query){
$query ->select(DB::raw(1))
->from('campaign_customers')
->whereRaw('campaign_id', '!=', 'c.id');
})
->where('cc.active', '=', 1)
;
irgendwelche Tipps auf, wie man die Logik arbeiten würde groß sein
Das gibt '' 0 => Array: 3 [ "Abfrage" => „select count (*) als Aggregat von' campaigns' als 'c' innere Verknüpfung 'campaign_customers' als' cc' auf 'cc '.'campaign_id' =' c'.'id' wo 'c'.status' =? und' c'.scheduled' =? und c.scheduled_at <= NOW() und 'cc'.'status =? und 'cc'.active' =?" "Bindungen" => array: 4 [ 0 => 1 1 => 1 2 => 2 3 => 1 ] "time" => 0,51 ] ] '' – Taacoo
Ich gehe davon aus, dass jeder ? ist eine schlechte Rendite von den Modellen? – Taacoo
Nein, das "?" Symbole sind die Abfrageinformationen, die sich von einer Abfrage zu einer anderen ändern können: die Variablen, die Sie an die Abfrage übergeben. –