我想联接两个表,一个表是实际的表数据,另一个表是检查表,在该表中,我正在检查要在日期条件下加入两个表的内容。
表1包含大量数据,其中包含account_id,Partner_id,Dates和actual_review。
审核表是具有账户_id,合作伙伴_id,审核日期和recommended的数据的表。
我正在做的是注册一个帐户,然后对该帐户进行审核,然后在review_recommended中添加该审核。
Table 1:
Id_partner | Id_account | Date | actual_review
4 | 7009 | 2018/12/23 | Good
4 | 7009 | 2018/12/25 | Good
4 | 7009 | 2018/12/27 | Good
4 | 7009 | 2018/12/31 | Bad
4 | 7009 | 2019/01/10 | Good
4 | 7009 | 2019/01/14 | Good
4 | 7009 | 2019/01/16 | Bad
4 | 7009 | 2019/02/12 | Good
4 | 7009 | 2019/02/15 | Good
4 | 7009 | 2019/02/18 | Bad
4 | 7009 | 2019/02/25 | Bad
4 | 7009 | 2019/03/05 | Bad
4 | 7009 | 2019/03/06 | Good
4 | 7009 | 2019/03/09 | Good
4 | 7009 | 2019/03/12 | Good
4 | 7009 | 2019/03/15 | Bad
4 | 7009 | 2019/03/18 | Bad
4 | 7009 | 2019/03/20 | Good
我考虑了一下,然后比他们的评论好还是坏 并在这些表中有不同的表格,我会在一段时间后对帐户进行审核,例如,如果我今天对帐户进行了审核,那么我可能会在某个时间或某天之后对该帐户进行审核
Review Table :
Id_partner | Id_account | Date_review | review_recommended
4 | 7009 | 2018/12/22 | Good
4 | 7009 | 2019/01/20 | Bad
4 | 7009 | 2019/02/16 | Good
4 | 7009 | 2019/03/12 | Bad
我希望以这样一种方式联接两个表,直到再次对其进行复审之前,我需要review_recommended在下一个表之前保持一致
我尝试使用“左连接”进行操作,但由于它会连接大多数行,因此变得很困难
Table After Joining :
Id_partner | Id_account | Date | actual_review | review_recommended
4 | 7009 | 2018/12/23 | Good | Good
4 | 7009 | 2018/12/25 | Good | Good
4 | 7009 | 2018/12/27 | Good | Good
4 | 7009 | 2018/12/31 | Bad | Good
4 | 7009 | 2019/01/10 | Good | Good
4 | 7009 | 2019/01/14 | Good | Good
4 | 7009 | 2019/01/16 | Bad | Good
4 | 7009 | 2019/02/12 | Good | Bad
4 | 7009 | 2019/02/15 | Good | Bad
4 | 7009 | 2019/02/18 | Bad | Good
4 | 7009 | 2019/02/25 | Bad | Good
4 | 7009 | 2019/03/05 | Bad | Good
4 | 7009 | 2019/03/06 | Good | Good
4 | 7009 | 2019/03/09 | Good | Good
4 | 7009 | 2019/03/12 | Good | Good
4 | 7009 | 2019/03/15 | Bad | Bad
4 | 7009 | 2019/03/18 | Bad | Bad
4 | 7009 | 2019/03/20 | Good | Bad
由于表中有许多帐户和合作伙伴,因此已在id_accounts,id_partners,Date和Date_review上完成加入。 任何指导或帮助表示赞赏!
答案 0 :(得分:0)
请尝试这个。
<input placeholder="myplaceholder" list="opts"/>
<datalist id="opts">
<option>One</option>
<option>Two</option>
<option>Three</option>
</datalist>
答案 1 :(得分:0)
这是在mysql中解决此问题的一种方法 test1是您的表1 而test2是您的评论表。
使用row_nmber可以更好地解决IT问题
但是由于您没有定义数据库版本并命名此更好的解决方案
select d.*,test1.actual_review, test2.review_recommended
FROM test2
inner join
(
SELECT dates,
Id_partner,
Id_account,
MAX(Date_review) AS Date_review
FROM (SELECT test1.*, test2.`Date_review`, test2.`review_recommended`
FROM test1
LEFT JOIN test2
ON test2.`Id_account` = test1.`Id_account`
AND test2.`Id_partner` = test1.`Id_partner`
WHERE test1.Dates > test2.`Date_review`) DATA
GROUP BY dates, Id_partner, Id_account )d
ON test2.Date_review =d.Date_review
inner join test1 on d.dates = test1.dates and d.Id_account = test1.Id_account and d.Id_partner = test1.Id_partner;
使用row_number编辑1
select * from (
select data.*,row_number() over (partition by Id_account,Id_partner,dates order by Date_review desc ) as sr_no from
(SELECT test1.*, test2.`Date_review`, test2.`review_recommended`
FROM test1
LEFT JOIN test2
ON test2.`Id_account` = test1.`Id_account`
AND test2.`Id_partner` = test1.`Id_partner`
WHERE test1.Dates > test2.`Date_review`) as data) as d
where d.sr_no =1;