嘿,我试过这个帖子,但它不起作用,我无法弄清楚为什么......
这是我的SQL:
SELECT * FROM gone_items
LEFT JOIN items
ON gone_items.item_ID=items.ID
WHERE
gone_items.aus_ID='$ID'
ORDER BY items.name ASC
现在,我通过PHP获取并拥有$ row并尝试使用另一个mysql来获取gone_items表的各个ID。但是如果我使用$ row [' ID']我会获得items.ID的ID而不是来自gone_items.ID的ID。
我尝试在第一个查询中手动设置变量,但它不起作用。
我也试过这个:MYSQL Left join A.table and b.table while retaining a.table id
也没帮我...
我想要的只是保留gone_items表中的ID(主键)..
有谁能告诉我我做错了什么?
爱 克
修改的
//Query for Joined infos
$sqlx="SELECT foto_res_ausgeliehene_geg.ID, foto_res_ausgeliehene_geg.aus_ID, foto_res_ausgeliehene_geg.geg_ID, foto_res_ausgeliehene_geg.zusaetzliches, foto_res_gegenstaende.ID, foto_res_gegenstaende.bezeichnung, foto_res_gegenstaende.seriennummer, foto_res_gegenstaende.interne_seriennummer, foto_res_gegenstaende.zusaetzliches FROM foto_res_ausgeliehene_geg
LEFT JOIN foto_res_gegenstaende
ON foto_res_ausgeliehene_geg.geg_ID=foto_res_gegenstaende.ID
WHERE
foto_res_ausgeliehene_geg.aus_ID='$ID'
ORDER BY foto_res_gegenstaende.bezeichnung ASC
";
$ergebnisx = mysqli_query($db,$sqlx);
while ($zeilex = mysqli_fetch_assoc($ergebnisx))
{
//Query for individual infos
$sqly="SELECT * FROM foto_res_ausgeliehene_geg
WHERE `geg_ID`='".$zeilex['ID']."'
AND `aus_ID`='$ID'
GROUP BY `geg_ID`
";
$ergebnisy = mysqli_query($db,$sqly);
while ($zeiley = mysqli_fetch_assoc($ergebnisy))
{};
现在我确实单独选择了所有项目。由于LEFT JOIN,foto_res_ausgeliehene_geg.ID仍然与foto_res_gegenstanede.ID合并。
因此,如果我访问$ zeilex [' ID']即可获取foto_res_gegenstaende.ID的ID。
如果我将其中一个表格中的ID字段重命名为item_ID
,会有帮助吗?
非常感谢。
爱 克。
答案 0 :(得分:1)
您应该明确说明要选择的项目,而不是使用select *。否则,您可能会遇到多个id字段的冲突。在你的情况下像:
select gone_items.id, gone_items.column1, gone_items.column2, items.column1, items.column2
限制所选数据的数量也被视为良好做法。但同时也是一个高度辩论的正确方法。 Performance issue in using SELECT *?
答案 1 :(得分:0)
务!
我只是将其中一个主要ID密钥重命名为其他内容,在这种情况下,其中一个获得了ID - > ITEM_ID。另一个仍为ID
,左联接不会合并它们。
修改的
工作代码
$sqlx="SELECT foto_res_ausgeliehene_geg.item_ID, foto_res_ausgeliehene_geg.aus_ID, foto_res_ausgeliehene_geg.geg_ID, foto_res_ausgeliehene_geg.zusaetzliches, foto_res_gegenstaende.ID, foto_res_gegenstaende.bezeichnung, foto_res_gegenstaende.seriennummer, foto_res_gegenstaende.interne_seriennummer, foto_res_gegenstaende.zusaetzliches FROM foto_res_ausgeliehene_geg
LEFT JOIN foto_res_gegenstaende
ON foto_res_ausgeliehene_geg.geg_ID=foto_res_gegenstaende.ID
WHERE
foto_res_ausgeliehene_geg.aus_ID='$ID'
ORDER BY foto_res_gegenstaende.bezeichnung ASC
";
$ergebnisx = mysqli_query($db,$sqlx);
while ($zeilex = mysqli_fetch_assoc($ergebnisx))
{
//Query for individual infos
$sqly="SELECT * FROM foto_res_ausgeliehene_geg
WHERE `item_ID`='".$zeilex['item_ID']."'
";
$ergebnisy = mysqli_query($db,$sqly);
while ($zeiley = mysqli_fetch_assoc($ergebnisy))
{