2015-12-01 7 views
-7

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

У меня есть две таблицы, одна с продуктами и другая с избранными. Таблица избранных имеет 2 поля, id_user и id_product.

Теперь, я хочу запросить все избранные продукты и показать их на моей веб-странице. Я думаю, что я должен сделать join по моему запросу, но на данный момент я действительно потерян.

Например, я хочу показать все избранные продукты от пользователя id = 3, что я должен делать?

+2

Можете ли вы замаскировать макеты таблиц? –

+0

Подзапрос или соединение. пример подзапроса: 'SELECT * FROM products WHERE id IN (SELECT id_product FROM избранное WHERE id_user = 3)' – Steve

ответ

3

Для справки в будущем, задавая вопросы по стеку, вам необходимо указать всю необходимую информацию. Например, ваш макет базы данных. Мы не читатели разума, но это предположение.

Select * from Favorites junk 
Left join Products poop on 
poop.id = junk.id_product 
Left join Users stuff on 
stuff.id = junk.id_user 
1

Вы ищете такой запрос с присоединением.

select a.* from favourites as a join products as b on a.id_product= b.id 
+0

Возможно, это решение, но я хочу получить информацию о продукте, так что это будет так, нет? 'select b. * From products b join favorites a on a.id_product = b.id' –

+0

Да, так ваш запрос должен быть ... Итак, вы получите каждый любимый продукт на основе идентификатора продукта ... –

0

Вам нужно сделать основной запрос против таблицы «избранных» и присоединиться к таблице продуктов, поэтому при условии, что ваши id_product поле указывает на идентификатор поля в вашей таблице продукции:

SELECT fav.*, prod.* FROM favourites fav RIGHT JOIN products prod ON prod.id = fav.id 

Примечание что я использую RIGHT JOIN здесь, потому что вы хотите, чтобы правая таблица (в этом случае избранное) имела информацию для извлечения (в противном случае вы получите результаты NULL, если id_product указывает на несуществующий id). Также обратите внимание, что я дал каждой таблице псевдоним (fav и prod соответственно), потому что это упрощает/ускоряет выполнение запроса.

Надеюсь, это поможет!

0

Вы можете использовать INNER JOIN.

Если вы следуете приведенному ниже примеру, вы можете получить эту идею. Я не знаю, что у вас есть в вашей таблице продуктов. Из вашего описания, похоже, вы присоединились к ID пользователя.

USE AdventureWorks; 
GO 
/* 
Create a Join on 2 tables to show information from both. The example tables are from the AdventureWorks database: 
    Production.Product 
    Production.ProductInventory 

In this example we'll look to get the Product ID and Name from the Product table and the inventory quantity, shelf, and bin from the  ProductInventory table. 
*/ 

SELECT 
/* Precede each column you want to select with the identifier of which table it's coming from */ 
    prod.ProductID, 
    prod.Name, 
    inv.Shelf, 
    inv.Bin, 
    inv.Quantity 

/* Select items from the Product Table */ 
FROM Production.Product AS prod 

/* Use an INNER JOIN to get the items related to the Product table that are in the ProductInventory table based on the ProductID */ 
INNER JOIN Production.ProductInventory AS inv ON 
    prod.ProductID = inv.ProductID 
Смежные вопросы