我需要检索另一个表中不存在的值。我正在与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
您可以添加一些示例数据到小提琴并显示所需的结果? –