這是我的代碼的例子,它從兩個mysql表中獲取信息,相當容易。無法找出左邊的連接從左邊的表中獲取所有內容,並且不會在右邊的MYSQLI中重複結果
一個表包含實現,另一個表包含實現,另一個表包含實現。相關性左連接將realisations.id = realisations_kind.realisation_id,我的實際代碼,沒有左連接,我一直在做這只是一個骯髒的方式。
$s = $mysqli->prepare("SELECT id, name FROM realisations");
$s->execute();
$s->bind_result($id, $name);
$s->store_result();
while($s->fetch())
{
/***/
$si = $mysqli->prepare("SELECT kind FROM realisations_kind WHERE realisation_id = ?");
$si->bind_param('i', $id);
$si->execute();
$si->bind_result($kind);
$si->store_result();
while($si->fetch())
{
if(isset($kind)) {
$arrayKind[] = $kind;
}
}
$return[] = array('id' => $id, 'name' => $name, 'kind' => $arrayKind);
$arrayKind = null;
/***/
}
這將輸出此陣列
Array
(
[0] => Array
(
[id] => 1
[name] => Building 1
[kind] => Array
(
[0] => 0
[1] => 1
)
)
[1] => Array
(
[id] => 2
[name] => Building 2
[kind] => Array
(
[0] => 1
)
)
..................more
,從而可以看到我得到在索引0密鑰「之類的」,這得到了2分的結果和在索引1處得到了「一種」 1分的結果,這是正確的結果,因爲這個表有3個記錄,兩個分配給id1,另一個分配給id2。
我一直在試圖通過左連接和組sql語句做到這一點,但我無法找到如何做到這一點,我在過去幾次做過,但我忘了。現在,我有點愚蠢地問這樣的基本事情。
LEFT JOIN左表的結果中的所有行的結果,但重複右表或者如果它,我設置組從右側刪除重複項,但不打印出來從左表中的所有結果,只給第一:(
洛爾我需要思考5分鐘它是如何工作的,但它非常簡單。謝謝。怎麼樣的SQL語句是可以通過SQL來做到這一點? – Cameleon
有什麼可能?嵌套數據是不可能的。 MS Access有一些UI功能來顯示嵌套的數據。但它不是SQL功能。 –
好的,再次感謝。 – Cameleon