Zadejte hledaný výraz...

Výber dát z 3 tabuliek – veľká záťaž

FSP
verified
rating uzivatele
(1 hodnocení)
6. 6. 2017 19:25:15
Potreboval by som poradiť.
Z dvoch tabuliek si bez problémov vytiahnem dáta a zobrazia sa mi na stránke.
Syntax je takáto:
Takže z tabuľky oc_product_description vyťahujem ID produktu, názov, kľúčové slovo
Z tabuľky oc_product vyťahujem model a cenu
Tento skript mi z databázy vytiahne okolo 8000 položiek za 2 sekundy.
Ale ja potrebujem vytiahnuť dáta len z určitej kategórie, napr. z kategórie č. 11 a tieto dáta sa nachádzajú v tretej tabuľke, ktorú musím do skriptu pridať.
Tak syntax som upravil takto:
Pribudol stĺpec oc_product_to_category.category_id, tabuľka oc_product_to_category a riadok WHERE som upravil tak ako som upravil a zrejme tu bude problém (vrátane riadku AND). Totiž až táto syntax mi zobrazuje položky z kategórie 11, čo je asi 300 položiek, problém však je, že z nejakého dôvodu sa stránka dlho načítava a buď skončí hláškou MySQL server has gone away alebo stránka sa načíta správne až za minútu s požadovanými dátami, ale Firefox dovtedy zožerie celú pamäť a padne.
Nevie niekto kde by mohol byť pes zakopaný?
6. 6. 2017 19:25:15
https://webtrh.cz/diskuse/vyber-dat-z-3-tabuliek-velka-zataz#reply1283486
indy.cz
verified
rating uzivatele
6. 6. 2017 20:18:47
Je tam kartézský součin na oc_product_description, oc_product. Musíš ty tabulky propojit. Zhruba takto:
$sql = 'SELECT oc_product_description.product_id, oc_product_description.name,
oc_product_description.tag, oc_product.model, oc_product.price,
oc_product_to_category.category_id
FROM oc_product_description, oc_product, oc_product_to_category
WHERE oc_product_description.product_id = oc_product_to_category.product_id AND oc_product.product_id = oc_product_description.product_id
AND oc_product_to_category.category_id = 11
ORDER BY oc_product_description.product_id ASC';
6. 6. 2017 20:18:47
https://webtrh.cz/diskuse/vyber-dat-z-3-tabuliek-velka-zataz#reply1283485
FSP
verified
rating uzivatele
(1 hodnocení)
6. 6. 2017 20:24:26
Perfektné, ďakujem!
Teraz keď na to pozerám, ja som vlastne išiel tou istou cestou, len som do syntax dával
WHERE oc_product_description.product_id = oc_product_to_category.product_id AND oc_product_to_category.category_id = 11
alebo
oc_product.product_id = oc_product_description.product_id AND oc_product_to_category.category_id = 11
ale nenapadlo mi to prepojiť všetko dokopy. Už budem vedieť ;)
6. 6. 2017 20:24:26
https://webtrh.cz/diskuse/vyber-dat-z-3-tabuliek-velka-zataz#reply1283484
- Napište ty JOINy explicitně
- Oddělte podmínky pro JOIN a podmínky pro WHERE
- Použijte aliasy
- Dotaz zarovnejte, ať se lépe čte
6. 6. 2017 21:39:26
https://webtrh.cz/diskuse/vyber-dat-z-3-tabuliek-velka-zataz#reply1283483
FSP
verified
rating uzivatele
(1 hodnocení)
6. 6. 2017 22:24:25
Díki, vyzerá to dobre. Ja hlavne testujem, čoho som schopný. Pred chvíľou som si vytvoril stránku a z menu si vyberám z ktorej kategórie chcem zobrazovať položky. Zatiaľ všetko funguje.
6. 6. 2017 22:24:25
https://webtrh.cz/diskuse/vyber-dat-z-3-tabuliek-velka-zataz#reply1283482
martinzsa
verified
rating uzivatele
(1 hodnocení)
7. 6. 2017 09:55:00
A hlavne pri navrhu databazy pouzivaj PRIMARY a FOREIGN KEY v jednotlivych tabulkach a ak chces vyhladavat podla inych stplcov tak aj indexi a dotazy ti miesto sekund budu bezat v miliseknudach, bez tohto sa totiz pri vacsich DB nepohnes a budu prakticky nepouzitelene.
7. 6. 2017 09:55:00
https://webtrh.cz/diskuse/vyber-dat-z-3-tabuliek-velka-zataz#reply1283481
Pro odpověď se přihlašte.
Přihlásit