簡體   English   中英

SQL select 如果與另一個表中的值不同,則顯示表(Laravel)

[英]SQL select show table if not same value from another table (Laravel)

這是我的查詢,我試過這個查詢它有效。

SELECT * 
FROM conference_venue 
WHERE id_venue NOT IN (SELECT id_venue FROM submission_data WHERE id_submission = 1);

我想在conference_venue 中顯示數據。 但我不想顯示 id_venue 與 submit_data 表相同的數據(與提到 id_submission 的 id_venue 相同)。

我正在嘗試查詢 laravel 版本,但它是一個沒有錯誤的空白屏幕。

DB::table('conference_venue')
    ->whereNotIn('id_venue', function($q){
      $q->select('id_venue')
      ->from('submission_data')
      ->where('id_submission', '=', 1);
    })->select('*')->get();

當我在 sql 查詢控制台中嘗試時,此查詢有效,但在我使用 Laravel 查詢生成器嘗試時失敗。

你可以試試這個:

DB::table('conference_venue')
->select('*')
->whereRaw(
'conference_venue.id_venue NOT IN (SELECT submission_data.id_venue FROM submission_data WHERE id_submission = 1)'
)

或者更好的是,為conference_venue和 submit_data 創建一個submission_data (即: ConferenceVenueSubmissionData ),您可以為ConferenceVenueSubmissionData添加 Eloquent 關系。

Eloquent 關系支持各種常見關系(一對一、一對多、多對多等),被定義為 Eloquent model 類上的方法。 由於關系還可以作為強大的查詢構建器,將關系定義為方法提供了強大的方法鏈接和查詢能力。 (參考: https://laravel.com/docs/8.x/eloquent-relationships

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM