PHP MySQL 仅显示表中多条记录的唯一值

我很难过,我不知道如何使用多个不同的标识符在表上获取结果,然后对结果进行分组


这是我的表ProjectFieldValue简而言之


id | project_id | textValue      | dateValue  | fieldKey

================================================================

1  | 1000       | Closed         | NULL       | contract_status

================================================================

2  | 1000       | NULL           | 2019-05-01 | closing_date

================================================================

3  | 1001       | Open           | NULL       | contract_status

================================================================

4  | 1001       | NULL           | 2019-05-22 | closing_date

================================================================

5  | 1002       | Closed         | NULL       | contract_status

================================================================

6  | 1002       | NULL           | 2019-05-11 | closing_date

================================================================

7  | 1003       | Closed         | NULL       | contract_status

================================================================

8  | 1003       | NULL           | 2019-05-24 | closing_date

================================================================

我需要运行查询以获取所有记录...

  1. “contact_status”的fieldKey和“Open”的fieldKey的textValue

  2. “close_date”的fieldKey和2019-05-01 AND 2019-05-30之间的dateValue

这是我尝试过的,我只是得到一个空白的查询结果集

select pfv.* 

from ProjectFieldValue pfv

where (pfv.dateValue between '2019-05-01' AND '2019-05-30' AND pfv.fieldKey = 'closing_date') 

AND (pfv.textValue = 'Closed' AND pfv.fieldKey = 'contract_status')


墨色风雨
浏览 131回答 2
2回答

慕村225694

空白是可以的,因为您试图获取字段键 = 结束日期和字段键 = 合同状态的所有记录,这是不可能的。您可以尝试使用 OR 代替 AND。喜欢select pfv.* from ProjectFieldValue pfvwhere (pfv.dateValue between '2019-05-01' AND '2019-05-30' AND pfv.fieldKey = 'closing_date') OR(pfv.textValue = 'Open' AND pfv.fieldKey = 'contract_status')此外,我更改了 pfv.textValue = 'Close' 为 pfv.textValue='Open' 因为““contact_status”的 fieldKey 和“Open”的 fieldKey 的 textValue”然后你会得到满足的记录“contact_status”的 fieldKey 和“Open”的 fieldKey 的 textValue 或“close_date”的fieldKey和2019-05-01 AND 2019-05-30之间的dateValue如果只想获取 1.“contact_status”的 fieldKey 和“Open”的 fieldKey 的 textValue你可以select pfv.* from ProjectFieldValue pfvwhere pfv.textValue = 'Open' AND pfv.fieldKey = 'contract_status'并只获取记录“close_date”的fieldKey和2019-05-01 AND 2019-05-30之间的dateValueselect pfv.* from ProjectFieldValue pfvwhere (pfv.dateValue between '2019-05-01' AND '2019-05-30' AND pfv.fieldKey = 'closing_date')

慕婉清6462132

我认为您需要将您的选择拆分为 2 并进行子查询.... 检查此文档:https://www.w3resource.com/mysql/subqueries/index.php
打开App,查看更多内容
随时随地看视频慕课网APP