Autor | Zpráva | ||
---|---|---|---|
Jakubbbb Profil * |
Dobrý den, mám tyto dvě tabulky:
Tabulky jsou produkt a varianta. Snažím se vyhledávat pomocí sku a názvu. Varianta se pozná tak, že je u ní v poli parent sku hlavního produktu. Lze to vykonat jedním příkazem, abych je vyhledal? Exporimentoval jsem s UNION, ale nedařilo se mi najít výsledky. $q = $db->query("SELECT */*,product.sku AS sku*/ FROM product LEFT JOIN variation ON product.sku = variation.parent WHERE product.sku LIKE '%$str%' OR variation.sku LIKE '%$str%' LIMIT 25"); Výpis vypadá takto: stdClass Object ( [id] => [sku] => [name] => [manufacturer] => 17 [spec] => 1 [size] => [color] => 3 [in_stock] => [short_desc] => popis... [desc] => popis.... [ean] => 5902745510705 [price_buy] => 712 [price_sell] => 889 [delivery_date] => 1 [category] => [selled] => [returned] => [lock] => [active] => [parent] => ) Budu vděčný za každý tip a radu :) Tabulky jsou zde: https://prnt.sc/10dypds https://prnt.sc/10dypzg |
||
Keeehi Profil |
#2 · Zasláno: 6. 3. 2021, 01:05:47
Jakubbbb:
A co má být výsledkem? Na řádcích mají být namixované jak produkty tak i varianty? SELECT * FROM ( SELECT "product" AS type, id, sku, name FROM product WHERE sku LIKE '%$str%' UNION ALL SELECT "variant" AS type, id, sku, name FROM variation WHERE sku LIKE '%$str%' ) t LIMIT 25 Pokud jsem to špatně pochopil a o tohle ti nejde a tvým jediným problémem je, že ti chybí nějaké sloupce, tak za to nemůže SQL. To nemá vůbec problém s tím, že dva sloupce pojmenuješ stejně. Samozřejmě, když pak v php necháš výsledek překonvertovat na objekt, tak ten se s tím musí nějak vypořádat. Nevím, jaká je tam logika, ale v důsledku se bude při schodě jmen jeden sloupec ignorovat, protože objekt prostě nemůže mít dva atributy se stejným jménem. Musíš tedy SQL napsat tak, aby jména soupců byla nakonec rozdílná. ... product.sku AS product_sku, variation.sku AS variation_sku, ... |
||
Časová prodleva: 3 roky
|
0