выборка изображений из нескольких таблиц - PullRequest
0 голосов
/ 31 августа 2018

Я строю небольшой интернет-магазин, где у меня есть родительская таблица с названием «products» и дочерняя таблица с именем «images».

Я следовал передовой практике и установил ограничение внешнего ключа с помощью поля product_id, устанавливающего связь между обеими таблицами.

продуктов

product_id (PK parent table)
product_title
product_category_id
product-price
product_quantity
product_description
long_description
product_image

изображения

image_id (PK for child table)
product_id (foreign key)
product_image_two

Примечание: каждый продукт будет иметь 2 изображения, поэтому я хочу получить продукт на основе его product_id и получить связанные изображения из каждой таблицы.

т. запрос извлекает product_image из 'products' и product_image_two из 'images'

Я пролистал множество постов о JOIN и попытался реорганизовать код других людей безуспешно.

Мое текущее заявление

<?php

$query = query("SELECT p.* , i.* FROM products p,images i WHERE p.product_id=i.product_id"); 
confirm($query);  

while ($row = fetch_array($query)): 


?>

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Звучит так, как будто вы хотите LEFT JOIN. Используя LEFT JOIN, вы можете выбрать все в таблице продуктов, но только строки из таблицы изображений, если их соответствующий ключ присутствует в таблице продуктов. Например, ваш запрос может выглядеть так:

SELECT p.* , i.* 
FROM products p,
LEFT JOIN images i ON
  p.product_id = i.product_id

Это вернет каждую строку в таблице продуктов и нулевое значение для каждого столбца в таблице изображений, если второго изображения не существует. Вот упрощенная демонстрация того, что это делает: SQL Fiddle

0 голосов
/ 31 августа 2018

Попробуйте с внутренним соединением: по вашему объяснению должно работать

SELECT p.product_id,p.product_image, i.product_image_two FROM products p
inner join images i on 
p.product_id=i.product_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...