我需要檢索另一個表中不存在的值。我正在與Shares
和Share_types
表一起工作。查詢以檢索表間不存在的值
目前,我有這個PHP的工作,但我總是循環遍佈在Share_types
的2500〜行,我認爲可以通過查詢來解決行數量。
用戶目前通過這一過程雲:
- 選擇共享的類型 -
Anual share
- 選擇將提取的一年 -
2016
- 代碼將產生的全部股份,直至
2016
年那還沒有生成。這意味着,如果它們不存在,那麼2016
的後面幾年也會產生。
這就是說,我的PHP代碼是這樣的:
// Retrieves always the 2,500~ rows
$listOfShareTypes = "SELECT user_id, date_start FROM share_types WHERE type = 'Anual share'";
foreach($listOfShareTypes as $type)
{
// Now is where I validate if the share already exists
$hasShare = "SELECT COUNT(*) FROM shares WHERE the_year = $yearSelectedByUser, user_id = $type->user_id, share_type_id = $type->id";
if($hasShare == TRUE)
continue;
else
// Create the share..
}
所以通常情況下,通過查詢沒有在另一個表我會做兩件select
在查詢中存在的結果進行檢索,但經過幾次搜索後,它指向使用LEFT JOIN
。但是我不知道如何做到這一點,因爲我需要匹配幾個字段(USER_ID,share_type_id,一年等)
看着這個例子,我在SQLFiddle創建的,其結果應該是:
(5, 3, 'Anual', '2015-06-28')
並且由於這個結果,並且由於用戶選擇了2016
的年份,我應該從2015
開始循環(在PHP中),直到2016
。
我接受你的答案,但我現在面臨的另一個問題,如果用戶選擇「2017年」應該檢索所有行,在這種情況下,所有5行,因爲它還沒有被添加到'份額'。你有任何線索如何通過查詢做到這一點? – Linesofcode
您可以添加一些示例數據到小提琴並顯示所需的結果? –