Mysql SQL multi-join与应具有不同值的相同列的表

Mysql SQL multi-join与应具有不同值的相同列的表,mysql,join,Mysql,Join,这很自然地返回值,其中billing_field_value.value是“Option 2”或“Option 5”。这适用于筛选系统,该系统应选择所有“选项2”(针对字段id 3),但也应仅选择“选项5”(针对字段id 4) 问题是返回的结果既有“选项2”->“其他选项”,也有“选项2”->“选项5”--因此,实际上,任何超过第一个选项的“过滤器”都会被忽略 我意识到“或”是问题的一部分,但因为这些字段和值存储在同一列中,但可以有不同的值,使用“和”意味着它永远不会计算为真 对于一些简单的事情

这很自然地返回值,其中billing_field_value.value是“Option 2”或“Option 5”。这适用于筛选系统,该系统应选择所有“选项2”(针对字段id 3),但也应仅选择“选项5”(针对字段id 4)

问题是返回的结果既有“选项2”->“其他选项”,也有“选项2”->“选项5”--因此,实际上,任何超过第一个选项的“过滤器”都会被忽略

我意识到“或”是问题的一部分,但因为这些字段和值存储在同一列中,但可以有不同的值,使用“和”意味着它永远不会计算为真


对于一些简单的事情,这可能是一个很长很复杂的解释,但我被难住了。有什么想法吗?

问题似乎在于,对于相同的列,使用不同的值对同一个表进行内部连接将永远无法解决问题,ORs将始终同时选择这两个列。技术上这个问题还没有解决,但我通过运行单独的select查询来获取ID,然后使用IN()进行相应的限制,解决了这个问题。考虑到这一点,如果有人有更优雅的建议,我很乐意听听!为了确保我理解,您只想返回ID=3、值=2或ID=4、值=5的记录,对吗?
SELECT
billing_line.id,
billing_line.active,
billing_line.account_id,
billing_line.billing_measure_id,
billing_line.site_id,
billing_line.rate,
billing_line.range_start,
billing_line.range_end,
billing_measure.`name` AS measure_name,
billing_service.`name` AS service_name,
billing_field_value.id as billing_field_value_id,
billing_field_value.billing_field_id,
billing_field_value.`value`
FROM
    billing_line,
    billing_service,
    billing_measure
INNER JOIN billing_field_value ON (  ( billing_field_value.BILLING_FIELD_ID = 3 AND billing_field_value.VALUE = 'Option 2')
                                   OR( billing_field_value.BILLING_FIELD_ID = 4 AND billing_field_value.VALUE = 'Option 5'))
WHERE
    billing_line.ACTIVE = 1
AND billing_line.ACCOUNT_ID = 1337
AND billing_line.SITE_ID IS NULL
AND billing_service.ID = 7
AND billing_measure.ID = 15
AND billing_line.BILLING_MEASURE_ID = billing_measure.ID
AND billing_measure.BILLING_SERVICE_ID = billing_service.ID
AND billing_field_value.BILLING_LINE_ID = billing_line.ID
ORDER BY
    billing_service.SORT ASC,
    billing_measure.SORT ASC,
    billing_line.RANGE_START ASC,
    billing_line.RATE ASC