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_awardsaccount_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, Macbookvariants:product_id, name, price
1, Черный 64Gb, 20000
1, Белый 32Gb, 10000
2, 15 дюймов, 100000SELECT 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, 6SELECT id, name
FROM products
WHERE id IN (SELECT related_product_id FROM related_products WHERE product_id=1 )
'options' => array(
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false,

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 мне пока не понятно, все запросы, которые я пытался сделать - вообще не работали.Пишите сначала один селект, потом присоединяете таблицу, потом в выборку добавляете данные с новой таблице и так по чуть-чуть усложняете запрос....