active
国家是一个:
Table 1
+
| id | value | active |
+
| 1 | v1 | 1 |
| 2 | v2 | 1 |
| 3 | v3 | 1 |
+
Table 2 Table 3
+
| id | link | value | active | | id | link | value | active |
+
| 1 | 1 | v21 | 1 | | 1 | 1 | v31 | 1 |
| 2 | 2 | v22 | 0 | | 2 | 2 | v32 | 1 |
| 3 | 3 | v23 | 1 | +
+
Table 1
Table 2
Table 3
active=1
Result
+------+-------+-------+--------+
| id | value | tbl 2 | tbl 3 |
+------+-------+-------+--------+
| 1 | v1 | v21 | v31 | -- values exist in every table
| 2 | v2 | NULL | v32 | -- active is 0 in Table 2 -> value tbl 2 = NULL
| 3 | v3 | v23 | NULL | -- value does not exist in Table 3 -> value tbl 3 = NULL
+------+-------+-------+--------+
SELECT SQL_CALC_FOUND_ROWS
`Table 1`.*,
IF(`Table 2`.`active` = 1, `Table 2`.`value`, NULL) AS tbl2,
IF(`Table 3`.`active` = 1, `Table 3`.`value`, NULL) AS tbl3
FROM
`Table 1`
LEFT JOIN
`Table 2` ON `Table 1`.`id` = `Table 2`.`link`
LEFT JOIN
`Table 3` ON `Table 1`.`id` = `Table 3`.`link`
WHERE
`Table 1`.`active` = 1
LIMIT <limit> OFFSET <offset>
SQL_CALC_FOUND_ROWS
表1
另外还有10张桌子。它们也有2000多个记录。
link
列和
Table 1.id