Právě je 12 kvě 2021 10:28

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 7 ] 
Autor Zpráva
 Předmět příspěvku: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 12 kvě 2016 22:31 
C4 zákazník

Registrován:
08 zář 2015 13:10
Příspěvky:
92
Dobrý deň,
keď chcem v SQL query zadať 2 rôzne vlastnosti 2 rôznych tabuliek, ktoré sa volajú rovnako, berie mi to iba jednu z nich, príklad : chcem, aby mi vypísalo názov výrobku a aj názov výrobcu, keď použijem ps_product_lang.name a ps_manufacturer. name a spojím ich tak mi ukáže iba jedno z tých name, nie obidve.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 13 kvě 2016 09:49 
Uživatelský avatar

Registrován:
03 bře 2011 23:21
Příspěvky:
648
Jaký vypadá ten SQL dotaz?

_________________
M4 Vše v jednom SEO - snadný a na funkce bohatý SEO plugin
https://www.presta-addons.com


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 16 kvě 2016 13:34 
C4 zákazník

Registrován:
08 zář 2015 13:10
Příspěvky:
92
Keď chcem vypísať ID produktu, názov produktu, názov výrobcu:

SELECT ps_product.id_product,ps_manufacturer. name,ps_product_lang.name
FROM ps_product
INNER JOIN ps_manufacturer
ON ps_product.id_manufacturer=ps_manufacturer. id_manufacturer
INNER JOIN ps_product_lang
ON ps_product. id_product=ps_product_lang. id_product
GROUP BY ps_product. id_product

vypíše iba ID produktu a meno výrobcu
keď dám ps_product_lang.name pred ps_manufacturer.name, tak zase vypíše iba ID a názov výrobku


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 17 kvě 2016 12:04 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
7927
Dobrý den,

pomocí SQL příkazu získáte tabulku se sloupci id_product, name a name. Takže dva sloupečky mají stejný název name, a proto se vypíše pouze výsledek z jednoho sloupce name. Stačí, když si pomocí aliasu AS změníte název jednoho sloupečku name (příp. obou). Takže začátek původní příkazu:
Kód:
SELECT ps_product.id_product, ps_manufacturer.name, ps_product_lang.name
stačí upravit např. na tvar:
Kód:
SELECT ps_product.id_product, ps_manufacturer.name AS manufacturer_name, ps_product_lang.name AS product_name

Pak místo původních sloupců získáte sloupce id_product, manufacturer_name a product_name. V příkladu je uvedena varianta, kdy se pomocí AS přejmenovaly názvy obou sloupců name. V závěru tedy stačí přejmenovat pouze název jednoho sloupce.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 17 kvě 2016 13:10 
C4 zákazník

Registrován:
08 zář 2015 13:10
Příspěvky:
92
Super, vďaka.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 27 kvě 2016 11:04 
C4 zákazník

Registrován:
08 zář 2015 13:10
Příspěvky:
92
Tak ešte na jeden problém som narazil, s ktorým potrebujem poradiť.
Chcem vypísať ku výrobkom aj NÁZOV kategórie, v ktorej sú zaradené.

Číslo kategórie, spolu s ID výrobku:
Kód:
SELECT id_product, id_category_default
FROM  ps_product
o dosť krajší výsledok je ešte s pridaním
GROUP BY id_product


Číslo kategórie spolu s názvom kategórie:
Kód:
SELECT  id_category,  name
FROM  ps_category_lang
GROUP BY id_category


Buď mi funguje spojenie s ps_category_lang alebo s ps_product_lang, ale obidve neviem rozbehať.

FUNGUJE :
Kód:
SELECT ps_product.id_product, ps_product.reference, ps_product. id_category_default, ps_category_lang.name
FROM ps_product
INNER JOIN ps_category_lang
ON ps_product. id_category_default=ps_category_lang.id_category
WHERE id_lang = 2
GROUP BY ps_product.id_product


FUNGUJE :
Kód:
SELECT ps_product.id_product, ps_product.reference, ps_product. id_category_default, ps_product_lang.name
FROM ps_product
INNER JOIN ps_product_lang
ON ps_product.id_product=ps_product_lang. id_product
WHERE id_lang = 2
GROUP BY ps_product.id_product   


Keď len spojím obe dokopy, ani zobraziť nič nechcem z toho druhého, NEFUNGUJE :
Kód:
SELECT ps_product.id_product, ps_product.reference, ps_product. id_category_default, ps_product_lang.name
FROM ps_product
INNER JOIN ps_product_lang
ON ps_product.id_product=ps_product_lang. id_product
INNER JOIN ps_category_lang
ON ps_product. id_category_default=ps_category_lang.id_category
WHERE id_lang = 2
GROUP BY ps_product.id_product


Keď vyhodím WHERE id_lang = 2, tak to funguje, ale to tam nutne potrebujem, pracujem aj s ps_product_lang.description_short a ak to nenastavím, tak mi to dáva nesprávny jazyk /nesprávne výsledky/.
Ale veď samostatne to funguje aj s tým WHERE id_lang = 2 , tak prečo to nefunguje, keď ich spojím dokopy?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - SQL rovnake vlastnosti roznych tabuliek
PříspěvekNapsal: 27 kvě 2016 13:14 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
7927
Dobrý den,

spojujete více tabulek, ve kterých je shodný sloupec id_lang, takže i v příkazu:
Kód:
WHERE id_lang = 2
musíte nadefinovat, se kterou tabulkou souvisí. Takže např. s tabulkou ps_product_lang:
Kód:
WHERE ps_product_lang.id_lang = 2

Ale jelikož chcete získat záznamy správného jazyka ze dvou tabulek ps_product_lang a ps_category_lang, tak bude příkaz WHERE vypadat:
Kód:
WHERE ps_product_lang.id_lang = 2 AND ps_category_lang.id_lang = 2
Pak ani nebude nutné použít příkaz GROUP BY.

Každopádně opět se jedná o zbytečně složitý dotaz, ve kterém by vůbec nemusel figurovat příkaz WHERE s výběrem jazyka, pokud byste druhý nevyužívaný jazyk z obchodu smazal. Jak jsem již uvedl v jednom z předchozích příspěvků. Navíc při spojení tabulek pomocí INNER JOIN také může nastat situace, že pokud z nějakého důvodu nebude v tabulkách ps_product_lang a ps_category_lang záznam existovat, tak se produkt ve výsledcích vůbec nezobrazí. Ale předpokládám, že definici příkazu INNER JOIN znáte a s touto situací počítáte.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 7 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
cron
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PrestaShop partneři

Seznam všech partnerů

PrestaShop Hosting
Návody pro C4

© 2009-2021 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz