0
SELECT
a.FirstName,
a.LastName,
c.Country,
SUM(b.Scores) AS Score
FROM names a
INNER JOIN countries c
ON a.id = c.cid
INNER JOIN scores b
ON a.id = b.sid
WHERE a.id = :id
GROUP BY c.Country
ORDER BY Score ASC
我試圖用這個查詢select
行與duplicated
但是從這些表選擇只有一個不同的列,組重複的行它
names countries scores
[id -- FirstName -- LastName] [id -- cid -- Country] [id -- sid -- Score]
[1 -- FName1 -- LName1 ] [1 -- 1 -- USA ] [1 -- 1 -- 5]
[2 -- FName2 -- LName2 ] [2 -- 1 -- France ] [2 -- 1 -- 6]
[3 -- FName3 -- LName3 ] [3 -- 1 -- Germany] [3 -- 2 -- 7]
[4 -- FName4 -- LName4 ] [4 -- 2 -- Germany] [4 -- 2 -- 8]
[5 -- 2 -- Czech ] [5 -- 2 -- 2]
[6 -- 3 -- Germany] [6 -- 4 -- 10]
[7 -- 4 -- France ] [7 -- 3 -- 15]
的靜態應該是不同countries
所以
{id[1] -> FName1 -> LName1}--{cid[1] -> USA, France, Germany}--{sid[1] -> 11}
{id[2] -> FName2 -> LName2}--{cid[2] -> Czech , Germany}--{sid[2] -> 17}
{id[3] -> FName3 -> LName3}--{cid[3] -> Germany }--{sid[3] -> 10}
{id[4] -> FName4 -> LName4}--{cid[4] -> France }--{sid[4] -> 15}
我希望得到這些數據,如下面的HTML結構
.Container div {
border: 1px solid blue;
margin: 10px;
}
.Container div div {
border: 1px solid red;
margin: 10px;
}
<div>
<div id="Master German">German</div>
<div id="German">
<div class="Container">
<div id='FName2 German'>
<div>FName2</div>
<div>LName2</div>
</div>
<div id='FName1 German'>
<div>FName1</div>
<div>LName1</div>
</div>
<div id='FName3 German'>
<div>FName3</div>
<div>LName3</div>
</div>
</div>
</div>
<div id="Master France">France</div>
<div id="France">
<div class="Container">
<div id='FName4 France'>
<div>FName4</div>
<div>LName4</div>
</div>
<div id='FName1 France'>
<div>FName1</div>
<div>LName1</div>
</div>
</div>
</div>
<div id="Master Czech">Czech</div>
<div id="Czech">
<div class="Container">
<div id='FName2 Czech'>
<div>FName2</div>
<div>LName2</div>
</div>
</div>
</div>
<div id="Master USA">USA</div>
<div id="USA">
<div class="Container">
<div id='FName1 USA'>
<div>FName1</div>
<div>LName1</div>
</div>
</div>
</div>
</div>
什麼,我想在我的查詢中使用了下面的代碼PHP
$pre = null;
echo "<div>";
$end = "";
while ($row = $stmt->fetch()) {
$FName = $row['FirstName'];
$LName = $row['LastName'];
$Country = $row['Country'];
if ($Country != $pre) {
echo $end;
echo "<div id='Master $Country'>$Country</div>";
echo "<div id='$Country'>";
}
$end = "</div>
</div>";
$pre = $Country;
echo "
<div id='$FName USA'>
<div>$FName</div>
<div>$LName</div>
</div>";
}
echo $end;
echo "</div>";
但隨着預期都不起作用,讓我頭疼試圖修復它,但沒有希望。
有沒有更好的方法來處理這個問題?從SQL方面或PHP方面或如果可能混合。
此解決方案是否需要對PHP代碼進行一些更改以使用'foreach($ countries as $ country)'?因爲如果我只是將'countries'定義爲變量,我只能得到一個ID爲'French,German'的HTML'div'。 – AXAI
此外,我沒有得到任何價值,除非存在重複。所以我把'HAVING'改爲'> 0'並且回到了前面的問題。 – AXAI