我有两个表,它们通过第三个表关联。第三个表具有前两个表的 ID 和关联值。 结构和 fiddle 可以在这里找到。
我想要做的是获取包含所有 session 和属性的行。 所以预期的结果是
+-------+-----------+-------+
| name | attr_name | value |
+-------+-----------+-------+
| sessA | attrA | 9 |
| sessA | attrB | 5 |
| sessA | attrC | null |
| sessB | attrA | null |
| sessB | attrB | 1 |
| sessB | attrC | 1 |
| sessC | attrA | 1 |
| sessC | attrB | null |
| sessC | attrC | null |
+-------+-----------+-------+
但是我只得到匹配的行。我错过了什么?
最佳答案
听起来您希望属性表和 session 表之间有一个笛卡尔积
。为此,您可以使用CROSS JOIN
。然后,您需要在最终表的联接中包含 attr_id 字段以获取 NULL
值:
SELECT a.name, b.attr_name , c.value
FROM tbla a CROSS JOIN tblB b
LEFT JOIN tblc c ON a.sess_id = c.sess_id
AND b.attr_id = c.attr_id
ORDER BY a.name, b.attr_name
关于php - Mysql 连接通过第三个表关联的两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23925696/