簡體   English   中英

PHP for SQL結果循環

[英]PHP for loop on sql results

我目前正在為一個學校項目工作。 我有2個SQL表和一個連接兩個表。 表1包含人員,表2包含卡。 連接表包含一個主鍵和2個值。 價值是一個人的主鍵,另一個是汽車的主鍵。 這張桌子將人與汽車連接起來。 這樣,我可以在PHP中創建一個表格,在其中可以看到誰擁有汽車。

這可以正常工作,但是每個擁有多輛汽車的人都會顯示多次。 因此,例如:第一個人同時擁有第一和第二輛汽車。 現在,該表顯示了2個人的名字,並在其名字后面顯示了汽車。 我希望只顯示一張表,上面有這些人的名字,然后在后面有一輛或多輛汽車。

以下是我現在設置方式的示例:

$query = "SELECT firstname, lastname, car FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber";
$result = mysqli_query($database, $query)
or die ("error");
echo "<table>";
while($record=mysqli_fetch_array($result))
{$firstname = $record['firstname'];

等等。 使用變量,我填寫表格。

有誰知道如何在這里幫助我? 我認為應該使用for循環來完成,但是最近3個小時我一直在嘗試,但無法完成。

我假設您的查詢返回的內容如下:

|   first_name   |   last_name   |   car   |
+------------------------------------------+
| John           | Doe           | Mustang |
| John           | Doe           | Camaro  |
| John           | Doe           | SL55    |
| Jane           | Deo           | Prius   |
| Jane           | Deo           | Renegade|

如果您只想要每個人擁有的汽車數量,則可以嘗試:

SELECT firstname, lastname, COUNT(car) FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber GROUP BY firstname, lastname;

這將為您提供:

|   first_name   |   last_name   |COUNT(car)|
+-------------------------------------------+
| John           | Doe           | 3        |
| Jane           | Deo           | 2        |

但是如果您想要類似...

|   first_name   |   last_name   |       car_list        |
---------------------------------------------------------+
| John           | Doe           | Mustang, Camaro, SL55 |
| Jane           | Deo           | Renegade, Prius       |

您可以使用Group Concat

SELECT firstname, lastname, GROUP_CONCAT(DISTINCT car ORDER BY car) AS car_list FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber GROUP BY firstname, lastname
$query = "SELECT firstname, lastname, car FROM people, cars, connecttabel         
WHERE connecttabel.personnumber = people.personnumer
AND connecttabel.carnumber = cars.carnumber Group by people.id";
$result = mysqli_query($database, $query)
or die ("error");
echo "<table>";
while($record=mysqli_fetch_array($result))
{$firstname = $record['firstname'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM