Я изучаю PHP / MySQL, чтобы предоставлять информацию о / для местных фермеров через веб-сайт. К сожалению, я натолкнулся на два, казалось бы, хитрых препятствия, которые я изо всех сил стараюсь преодолеть.
У меня есть 3 таблицы: «pro_list» (ПЕРВИЧНЫЙ КЛЮЧ продюсер_ид ), «product_list» (ПЕРВИЧНЫЙ КЛЮЧ product_id ) и промежуточный «prod_to_prod» (ИНОСТРАННЫЕ КЛЮЧИ provider_id и product_id ), чтобы включить отношение многие ко многим между двумя другими.
Идея состоит в том, чтобы создать список div элементов, содержащих информацию (например, телефон, электронная почта, местоположение ...), взятую из «pro_list» и то, что они производят из «product_list», используя свой мост. с 'prod_to_prod' (поскольку один производитель может производить много продуктов, и один и тот же продукт может быть произведен многими разными производителями).
Мои проблемы начинаются уже с генерации базового запроса, который должен возвращать элегантный список производителей, используя мост в качестве ссылки (т. Е. Я хочу, чтобы в списке отображались только производители, у которых provider_id имеет product_id s, связанных с ним в 'prod_to_prod').
Как вы можете себе представить, код, который я использовал ...
<?php
$pagequery="SELECT * FROM pro_list
OUTER JOIN prod_to_prod
WHERE pro_list.producer_id=prod_to_prod.producer_id
LIMIT $offset, $num_of_cells";
$res_pagequery=mysqli_query($conn,$pagequery);
while($proddiv=mysqli_fetch_array($res_pagequery)) {
echo "<div>
...Producer:".$proddiv['prod_firstname']."...
</div>;
}
?>
... вернул список с множеством дубликатов, так как provider_id s связано с различными product_id s в 'prod_to_prod'. Я пробовал многочисленные комбинации, используя SELECT DISTINCT, но пока все, что я получил, где сообщения об ошибках.
Я даже не знаю, как подойти к расширенному запросу (т.е. отобразить названия продуктов, связанных с каждым производителем, в соответствующем div , основываясь на ассоциациях pro_list.product_id = prod_to_prod .product_id AND product_list.product_id = prod_to_prod.product_id . Я предполагаю, что мне придется работать с UNION как минимум из двух SELECT, но, поскольку я получаю только дубликаты или ошибки, я даже не посмел бы попробовать ...
Как бы вы подошли к решению этой проблемы?