【发布时间】:2015-12-31 23:41:49
【问题描述】:
标题可能很奇怪,因为我不知道该怎么形容我在做什么。
我正在构建一个按名称排序的名册系统(想想部门、公司、排等)。我希望这个显示是完全动态的,并且我正在努力做到这一点。
在同一个数据库中,我有 2 个不相等的表,尽管它们共享几个列名,有时数据值相等,有时不相等。表tali_personnel_designations_weights 存储名称类别(师、连等),而表tali_personnel_designations 存储实际名称(第3 步兵师、基洛连等)。有很多事情正在发生,但 1 的答案会让我回到路上。两个表都有一个名为“name”的列,其中包含该条目的名称,例如 _weights 的 Division 和指定的 3rd Infantry Division。在我的 SQL 中,我希望能够同时选择这两个名称,但因为它在下面,所以唯一的返回来自 tali_personnel_designations_weights,就好像第一个表在结果中被重写了一样。
$SQL = "SELECT * FROM tali_personnel_designations JOIN tali_personnel_designations_weights ON tali_personnel_designations.designation_weight_id=tali_personnel_designations_weights.designation_weight_id ORDER BY tali_personnel_designations_weights.weight DESC, tali_personnel_designations.weight DESC";
$result = mysqli_query($db_handle, $SQL);
while ($db_field = mysqli_fetch_assoc($result)) {
$name = $db_field['name'];
echo $name; //output is value for 'name' in tali_personnel_designations_weights
echo "<br/>";
}
我正在尝试做的事情,如果你可以想象的话:
$designation_name = $db_field['tali_personnel_designations.name']; //output 3rd Infantry Division
$designationweight_name = $db_field['tali_personnel_designations_weights.name']; //output Division
我知道解决这个问题的简单方法是重命名列,这样“名称”就不会发生冲突,但我想在这里学习一些新东西!
感谢您的帮助。
【问题讨论】:
-
无需更改列,您可以通过 sql 执行此操作:select tablename.fieldname as newFieldname
-
感谢您的回复。但是我仍然需要所有的列,所以想使用
*通配符。下面没有工作。语法问题?$SQL = "SELECT tali_personnel_designations.name AS designation_name, tali_personnel_designations_weights.name AS designation_weight_name, * FROM tali_personnel_designations JOIN tali_personnel_designations_weights ON tali_personnel_designations.designation_weight_id=tali_personnel_designations_weights.designation_weight_id ORDER BY tali_personnel_designations_weights.weight DESC, tali_personnel_designations.weight DESC"; -
使用 Tablename.* 来选择一个表的所有列
-
Tablename.* AS 设置什么?
-
使用下面的
'tali_personnel_designations.name'引用,我被告知值未定义。$SQL = "SELECT tali_personnel_designations.*, tali_personnel_designations_weights.* FROM tali_personnel_designations JOIN tali_personnel_designations_weights ON tali_personnel_designations.designation_weight_id=tali_personnel_designations_weights.designation_weight_id ORDER BY tali_personnel_designations_weights.weight DESC, tali_personnel_designations.weight DESC";