#php #sql #database
#php #sql #База данных
Вопрос:
Я практикуюсь с запросами, и у меня есть вопрос о JOIN.
У меня есть эти 2 таблицы:
**PRODUCTS**:
id
name
description
**PRODUCT_IMAGES**
id
product_id
image_link
И я хочу использовать JOIN для объединения этих 2 таблиц, где я хочу видеть только название продукта с конкретным изображением, которое связано с идентификатором.
Я пытаюсь достичь этого с помощью этого ЗАПРОСА:
SELECT * FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;
Проблема сейчас в том, что я получаю всю информацию, но я хочу видеть только название и изображение.
Комментарии:
1. Изменить
*
наname, image
2.
"SELECT p.name,i.image_link FROM products p JOIN product_images i using(product_id)"
Ответ №1:
У вас ошибка с product_images
. id
поскольку это должно быть похоже на « product_images
. product_id
«, я исправил это, пожалуйста, используйте этот запрос.
SELECT products.name, product_images.image_link FROM `product_images`
INNER JOIN `products`
ON `product_images`.`product_id` = `products`.`id`;
Ответ №2:
Измените * на name, image_link:
SELECT name, image_link FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;
Ответ №3:
SELECT products.id,products.name FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;
Вместо *
вы можете указать column names
через запятую.
Вы можете выбрать LEFT JOIN
или INNER JOIN
в соответствии с вашими потребностями.
Ответ №4:
Выберите нужные столбцы в инструкции select. Лучше всего называть таблицу и столбец вместе. В противном случае, если в обеих таблицах существует столбец с одинаковым именем, это выдаст ошибку.
SELECT `products`.`name`,`product_images`.`image_link`
FROM `product_images`
LEFT JOIN `products`
ON `product_images`.`products.id` = `products`.`id`;
Ответ №5:
Простое использование inner join
SELECT
p.name,
i.image_link
FROM
products p
JOIN
product_images i USING(product_id)
Ответ №6:
Если вы уверены, что у вас есть данные в обеих таблицах, тогда используйте приведенный ниже ВЫБОР P.name, PI.image_link ИЗ product_images PI внутреннее ОБЪЕДИНЕНИЕ продуктов P НА P.id = PI.product_id
Если вы уверены, что у вас есть данные в таблице product, но их может не быть в product_image, тогда используйте below SELECT P.name , PI.image_link ИЗ products P слева JOIN product_images PI НА P.id = PI.product_id