我有网站我需要修改而不改变任何东西,只有我能做到的方法是添加有状态字段的mytable。
现在我有要求
if...{
$filter = "status = 0";
}
SELECT first_name, last_name, position, wage
FROM table1, mytable
WHERE table1.id = mytable.id
$filter
问题是“table1”和“mytable”都有状态,我对此无能为力,因为这个过滤器也用于其他16个看起来“完全相似”的请求,除了它们使用的是table1 - table2,table3,table4,table5 ,table6,...等以及仅用于过滤的状态可以有人帮忙吗?
MySQL中的类似$ this这样它知道我在FROM字段中引用表,所以我可以使用JOIN LEFT而不是在FROM中指定表吗?
答案 0 :(得分:1)
您可以(并且可能应该为了清晰起见)为任何列添加其表名前缀。您可以在查询的SELECT部分以及WHERE部分中执行此操作。例如:
SELECT
table1.first_name,
table1.last_name,
mytable.position,
mytable.wage
FROM
table1,
mytable
WHERE
table1.id = mytable.id AND
table1.status = "0"
如果要动态包含表并希望保持过滤器代码的通用性,可以使用AS关键字创建别名,所以:
$use_table = 'table1';
$sql = '
SELECT
filter_table.first_name,
filter_table.last_name,
mytable.position,
mytable.wage
FROM
'.$use_table'. AS filter_table,
mytable
WHERE
filter_table.id = mytable.id AND
filter_table.status = "0"
';
...这样,您就可以在$use_table
中切换正在使用的表,而无需更改任何其他SQL。
答案 1 :(得分:0)
您可以指定您引用的女巫表格列,例如"table1"."status"
:
SELECT first_name, last_name, position, wage
FROM table1, mytable
WHERE table1.id = mytable.id AND "table1"."status" = 0