Autor | Zpráva | ||
---|---|---|---|
lopik Profil |
#1 · Zasláno: 29. 10. 2020, 21:16:57
Dobrý deň prajem, s prácou v databázy som pomerne neskúsený a potreboval by som pomôcť. Mám kód
SELECT * FROM zceuiqvirtuemart_order_items i LEFT JOIN zceuiqvirtuemart_products p ON p.virtuemart_product_id = i.virtuemart_product_id LEFT JOIN `zceuiqvirtuemart_product_manufacturers` ON (i.virtuemart_product_id = `zceuiqvirtuemart_product_manufacturers`.`virtuemart_product_id`) LEFT JOIN `zceuiqvirtuemart_manufacturers_sk_sk` as m ON m.`virtuemart_manufacturer_id` = `zceuiqvirtuemart_product_manufacturers`.`virtuemart_manufacturer_id` LEFT JOIN zceuiqvirtuemart_product_categories as pcat ON p.product_parent_id = pcat.virtuemart_product_id LEFT JOIN zceuiqvirtuemart_categories_sk_sk as cat ON pcat.virtuemart_category_id = cat.virtuemart_category_id where i.virtuemart_order_id=7392 Keď dám tento dopyt vypísať, tam mi riadky zduplikuje, preto by som ich chcel pomocou riadku group by i.virtuemart_order_id to dať nejak dokopy, avšak mysql mi hlási chybovú hlášku a ja sa neviem pohnúť ďalej. viete mi prosím pomôcť ako by som to mohol vyriešiť? Ďakujem |
||
Kajman Profil |
#2 · Zasláno: 29. 10. 2020, 21:31:21
Pokud jsou produkty ve více kategoriích, tak chcete co?
|
||
lopik Profil |
#3 · Zasláno: 29. 10. 2020, 21:45:25
Kajman:
Dobrý deň, v tomto prípade by som chcel zobrazovať len jednu kategóriu. |
||
Kajman Profil |
#4 · Zasláno: 29. 10. 2020, 21:48:46
Je na serveru verze db podporující window funkce?
|
||
lopik Profil |
#5 · Zasláno: 29. 10. 2020, 21:56:47
Beží to na MySQL 8.0, neviem či Vám taká info stačí
|
||
Kajman Profil |
#6 · Zasláno: 29. 10. 2020, 23:11:22
Ta verze by je už měla umět. Třeba půjde něco takového
SELECT * FROM (SELECT i.*, p.*, m.*, cat.*, ROW_NUMBER() OVER(PARTITION BY i.virtuemart_order_item_id) AS poradi FROM zceuiqvirtuemart_order_items i LEFT JOIN zceuiqvirtuemart_products p ON p.virtuemart_product_id = i.virtuemart_product_id LEFT JOIN `zceuiqvirtuemart_product_manufacturers` ON i.virtuemart_product_id = `zceuiqvirtuemart_product_manufacturers`.`virtuemart_product_id` LEFT JOIN `zceuiqvirtuemart_manufacturers_sk_sk` AS m ON m.`virtuemart_manufacturer_id` = `zceuiqvirtuemart_product_manufacturers`.`virtuemart_manufacturer_id` LEFT JOIN zceuiqvirtuemart_product_categories AS pcat ON p.product_parent_id = pcat.virtuemart_product_id LEFT JOIN zceuiqvirtuemart_categories_sk_sk AS cat ON pcat.virtuemart_category_id = cat.virtuemart_category_id WHERE i.virtuemart_order_id=7392 ) t WHERE t.poradi = 1 ORDER BY t.virtuemart_order_item_id Každopádně vypisovat jen jednu z provázaných možností zavání divností. Kdybyste chtěl všechny, bude to více programování, viz Srovnání dotazů do závislých tabulek |
||
lopik Profil |
#7 · Zasláno: 30. 10. 2020, 08:48:47
Ďakujem, keď to hodím ako SQL dotaz, tak mi vyhodí hlášku: #1060 - Opakované meno poľa 'virtuemart_product_id' :((
|
||
Kajman Profil |
#8 · Zasláno: 30. 10. 2020, 10:14:52
Tak zkuste místo hvězdiček vypsat všechny sloupce, které potřebujete a tak aby se neopakovaly názvy nebo jim dát jedinečné aliasy.
|
||
lopik Profil |
#9 · Zasláno: 31. 10. 2020, 09:38:58
Vyskúšal som to upraviť a stále to hádže všetky riadky tzn, vypíše produkt viackrát, ak má priradených viac kategórii ako jednu:
SELECT * FROM (SELECT i.virtuemart_product_id as b, p.product_sku as c, m.virtuemart_manufacturer_id as z, cat.category_name as y, ROW_NUMBER() OVER(PARTITION BY i.virtuemart_order_item_id) AS poradi FROM zceuiqvirtuemart_order_items i LEFT JOIN zceuiqvirtuemart_products p ON p.virtuemart_product_id = i.virtuemart_product_id LEFT JOIN `zceuiqvirtuemart_product_manufacturers` ON i.virtuemart_product_id = `zceuiqvirtuemart_product_manufacturers`.`virtuemart_product_id` LEFT JOIN `zceuiqvirtuemart_manufacturers_sk_sk` AS m ON m.`virtuemart_manufacturer_id` = `zceuiqvirtuemart_product_manufacturers`.`virtuemart_manufacturer_id` LEFT JOIN zceuiqvirtuemart_product_categories AS pcat ON p.product_parent_id = pcat.virtuemart_product_id LEFT JOIN zceuiqvirtuemart_categories_sk_sk AS cat ON pcat.virtuemart_category_id = cat.virtuemart_category_id WHERE i.virtuemart_order_id=7392 ) t |
||
Kajman Profil |
#10 · Zasláno: 31. 10. 2020, 09:51:20
Jedinečné id z košíku ale omezuje to
WHERE t.poradi = 1, které jste nezkopíroval.
|
||
lopik Profil |
#11 · Zasláno: 31. 10. 2020, 10:35:13
Ďakujem, to som si nevšimol. Avšak ak tam nedám order by
ORDER BY t.virtuemart_order_item_id |
||
Kajman Profil |
#12 · Zasláno: 31. 10. 2020, 10:56:46
Protože jste ho nevypsal v poddotazu. Jestli podle nej chcete řadit, musite ho vypsat z tabulky i.
|
||
lopik Profil |
#13 · Zasláno: 31. 10. 2020, 20:31:47
Ďakujem za pomoc :)
|
||
Časová prodleva: 4 roky
|
0