Php 引用连接了MySQL数据,比如JSON表

Php 引用连接了MySQL数据,比如JSON表,php,html,mysql,sql,mysqli,Php,Html,Mysql,Sql,Mysqli,这个标题可能很奇怪,因为我不知道该如何表达我在做什么 我正在建立一个名册系统,该系统将按名称排序(考虑师、连、排等)。我希望这个显示是完全动态的,我正在尝试尽可能流畅地完成它 在同一个数据库中,我有两个不相等的表,尽管它们共享两个列名,其中数据值有时相等,有时不相等。表tali_人员(名称)权重存储名称类别(师、连等),而表tali_人员(名称)存储实际名称(第三步兵师、基洛连等)。有很多事情要做,但是对1的回答会让我重新上路。这两个表都有一个名为“name”的列,其中包含该条目的名称,例如“重

这个标题可能很奇怪,因为我不知道该如何表达我在做什么

我正在建立一个名册系统,该系统将按名称排序(考虑师、连、排等)。我希望这个显示是完全动态的,我正在尝试尽可能流畅地完成它

在同一个数据库中,我有两个不相等的表,尽管它们共享两个列名,其中数据值有时相等,有时不相等。表
tali_人员(名称)权重
存储名称类别(师、连等),而表
tali_人员(名称)
存储实际名称(第三步兵师、基洛连等)。有很多事情要做,但是对1的回答会让我重新上路。这两个表都有一个名为“name”的列,其中包含该条目的名称,例如“重量”的师和“名称”的第三步兵师。在我的SQL中,我希望能够选择这两个名称,但由于它在下面,唯一的返回是来自tali_Personal_Identifications_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/>";
}
我知道简单的解决方法是重命名列,这样“名称”就不会冲突,但我正在尝试学习一些新的东西


谢谢你的帮助

您的查询应该是这样的:

SELECT
    T.*, 
    T.name AS designation_name,
    TW.name AS designation_weight_name
FROM tali_personnel_designations T
JOIN tali_personnel_designations_weights TW
    ON T.designation_weight_id=TW.designation_weight_id
ORDER BY TW.weight DESC, T.weight DESC
然后在使用结果时,您可以得到
$db\u字段['designation\u name']
$db\u字段['designation\u weight\u name']
,并且不介意(也存在)
$db\u字段['name']


请注意,为表名使用别名使其更具可读性。

无需更改列,您可以通过sql执行此操作:选择tablename.fieldname作为NewFieldName感谢您的回复。但是我仍然需要所有的列,所以我想使用
*
通配符。下面的方法不起作用。语法问题?
$SQL=“选择tali_人员名称作为名称,选择tali_人员名称作为名称,选择tali_人员名称作为重量,*从大利公司人员名称加入大利公司人员名称。名称重量id=大利公司人员名称重量。名称重量id按大利公司人员名称重量排序。重量描述,大利公司人员名称重量描述";使用Tablename.*相反,要选择一个表的所有列,您将Tablename.*设置为什么?使用
'tali_personal_designations.name'
引用下面的命令,我被告知该值未定义<代码>$SQL=“选择tali_人员名称。*,tali_人员名称权重。*从tali_人员名称中加入tali_人员名称权重到tali_人员名称。名称权重id=tali_人员名称权重。名称权重id按tali_人员名称权重排序,tali_personal_designations.weight DESC”
引用
$db_字段['designment_weight_name']
有效,但其余无效。
$db_字段['tali_personal_designations.weight']
应使用通配符表示,但错误表明它未定义。您不应写入
$db_字段['tali_personal_designations.weight']
但是
$db_field['weight']
。现在,我意识到您并不是只有
名称作为共享列标识符。所以对于
weight
(可能还有其他的?)您必须与
name
的操作相同,即显式使用列别名,如
T.weight作为designation\u name\u weight
。请注意,在PHP中,您必须仅为要从结果中使用的列指定别名;在SQL部分,请不要介意。我还需要第二个表中的所有列。是否添加
TW.
be可以吗?对于“TW.*`,是的。这不是我所希望的,但比我的选择要好。谢谢你的回答!
SELECT
    T.*, 
    T.name AS designation_name,
    TW.name AS designation_weight_name
FROM tali_personnel_designations T
JOIN tali_personnel_designations_weights TW
    ON T.designation_weight_id=TW.designation_weight_id
ORDER BY TW.weight DESC, T.weight DESC