Борьба с выяснением, какие функции использовать, чтобы получить то, что мне нужно - перечислить все компании в порядке возрастания и всех их соответствующих пользователей.
До сих пор я создал 2 таблицы: «компании» и «пользователи» и связал их с внешним ключом, как показано ниже:
![](https://i.stack.imgur.com/Ly4Y6.png)
Я пытался выполнить запросы JOIN для использования обеих таблиц, которые работали до некоторой степени, хотя я не могу понять, как это исправить. Вот что я продолжаю вызывать:
![enter image description here](https://i.stack.imgur.com/Vydtx.png)
Как видите, компания "Contoso" указана дважды, так как в таблице пользователей с ней связано 2 пользователя. Код, который я делаю:
$joinquery = "SELECT companies.id, companies.name, users.fname, users.lname FROM users RIGHT JOIN companies ON users.cid = companies.id ORDER BY name ASC";
$joinresult = $mysqli->query($joinquery);
if($joinresult->num_rows > 0) {
while($row = $joinresult->fetch_assoc()){
$company = $row['name'];
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
echo "<div class='customer'>";
echo "<div class='name'>";
echo $company;
echo "</div>";
echo "<div class='contacts'>";
echo $name;
echo "</div>";
echo "</div>";
}
} else {
echo "No results";
}
Дивы просто делают его блок-элементом и меняют цвет.
Как получить всех пользователей в соответствующей компании, а не ряд для каждой компании и пользователя? Я пытался вложить, но я был дальше от конечной цели, ниже приведен код:
// Nested Query Test
$nestquery1 = "SELECT companies.name, users.fname, users.lname FROM companies INNER JOIN users ON companies.id = users.cid ORDER BY companies.name ASC";
$nestresult1 = $mysqli->query($nestquery1);
$nestquery2 = "SELECT companies.id, users.fname, users.lname FROM users INNER JOIN companies ON users.cid = companies.id ORDER BY fname ASC";
$nestresult2 = $mysqli->query($nestquery2);
if($nestresult1->num_rows > 0) {
while($row = $nestresult1->fetch_assoc()){
$company = $row['name'];
echo "<div class='customer'>";
echo "<div class='name'>";
echo $company;
echo "</div>";
if($nestresult2->num_rows > 0) {
while($row = $nestresult2->fetch_assoc()){
$fname = $row['fname'];
$lname = $row['lname'];
$name = $fname . " " . $lname;
echo "<div class='contacts'>";
echo "<li>";
echo $name;
echo "</li>";
echo "</div>";
}
}
echo "</div>";
}
} else {
echo "No results";
}
Помощь будет очень ценится!