SELECT productsTpId
FROM (SELECT productId, productsTpId
FROM tt
WHERE TRUE
AND (
optionsTpid = 1
OR optionsTpid = 5
OR optionsTpid = 10
)
GROUP BY productId, productsTpId
HAVING COUNT(productId) = 3 -- тут длина (количество) значений optionsTpid (1, 5, 10— это 3 значения)
) AS nest
WHERE productId = 2 -- искомый productId
(OrganisationSeller extends Seller)
будет объектом Organisation.seller
migration_versions
руками1 вопрос. Но к примеру как быть с ценой товара, или с количеством товара? Вроде как можно писать в таблицу товара?
Джинсы Левис (синие, мужские, Levis, 2019 года и прочее):
- S (6 500 рублей, 10 штук)
- L (6 500 рублей, 1 штука)
- XXXL (6 500 рублей, 2 штуки)
SELECT o.*, w.priority
FROM orders o
LEFT JOIN (
SELECT order_id, max(priority) as priority
FROM waypoints
GROUP BY order_id
) w ON o.id= w.order_id
ORDER BY w.priority desc
accounts
awards
accounts_awards
account_awards
или accounts_award
по конкретной ситуации(это особенно полезно, когда таблиц 100+)
SELECT c.id, c.text, u.id as user, p.id as post
FROM comments c
LEFT JOIN users u ON u.id=c.user_id
LEFT JOIN posts p ON p.id=c.post_id
WHERE u.id != 235
products
:id, name
1, IPhone
2, Macbook
variants
:product_id, name, price
1, Черный 64Gb, 20000
1, Белый 32Gb, 10000
2, 15 дюймов, 100000
SELECT v.name, v.price
FROM variants v
LEFT JOIN products p ON p.id=v.product_id
WHERE p.id=1
purchases
(покупки) с полями:order_id
— несколько записей выбираеются по этому полю, и у вас будет актуальное количество и значения товаровamount
— количество товара в заказеproduct_id
— привязка к товару, например получить его фото, но оно не обязательное, тк из основной таблицы может исчезнуть товар (сняли, удалили, распродали, мало ли что...), потому нужо завести поля name
, price
, sku
, offer
(или variant
) и прочееproduct_id, related_product_id
)product_id, related_product_id
1, 4
1, 34
1, 45
1, 6
SELECT id, name
FROM products
WHERE id IN (SELECT related_product_id FROM related_products WHERE product_id=1 )
product_id, feature_id, value
(где featured_id — id свойства из таблички выше)SELECT p.id, p.url, p.name
FROM e_products p
WHERE 1
AND p.id in (SELECT product_id FROM e_options WHERE feature_id=8 AND value in('Бежевый','Белый') )
AND p.id in (SELECT product_id FROM e_options WHERE feature_id=1 AND value in('Лето 2011') )
время выполнения запроса — 0.019 s для 10 тыс товаров, 100тыс значений свойств и десятка свойствfeature_id
хранить сразу название параметра, но лучше сразу разделите... чтобы можно было параметру поставить напрмиер поле включать или нет его в фильтр и задать порядок, или нужно будет выводить поля в саму форму фильтра (гонять большую таблицу — так себе решение) SELECT hosting.user_id, client.name, client.email, client.phonenumber, product.packagename
FROM tblhosting hosting
LEFT JOIN tblclients client ON client.id=hosting.user_id
LEFT JOIN tblproducts product ON product.id= hosting.packageid
WHERE hosting.domainstatus = 'Terminated'
AND hosting.packageid IN ('1' , '2' , '3')
А насчет логики работы JOIN мне пока не понятно, все запросы, которые я пытался сделать - вообще не работали.Пишите сначала один селект, потом присоединяете таблицу, потом в выборку добавляете данные с новой таблице и так по чуть-чуть усложняете запрос....