Vybratie dat z dvoch tabuliek z obmedzenim – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Vybratie dat z dvoch tabuliek z obmedzenim – MySQL – Fórum – Programujte.comVybratie dat z dvoch tabuliek z obmedzenim – MySQL – Fórum – Programujte.com

 

majo
~ Anonymní uživatel
85 příspěvků
19. 1. 2018   #1
-
0
-

Caute,

neviem si moc dobre poradit s nasledujucim problemom:

Mam dve tabulky:

tabulka produkty

-----------------------------------------

id      cena

1       5

2       6

3       4

tabulka zlavy

------------------------------------------

id      id_cena     hodnota

1       1               10

2       2                20

5      6                30

mam kluce pre tabulku produkty napr. WHERE produkty.id IN (2,3)

a potreboval by som k riadkom vybranych produktov ziskat aj ich zlavy

a to aj v pripade ak taka zlava nie je definovana v tabulke zlavy.. s RIGHT JOIN vsak ziskam cely obsah tabulky zlavy

da sa to nejak efektivne vytiahnut?

Nahlásit jako SPAM
IP: 188.123.100.–
gna
~ Anonymní uživatel
1891 příspěvků
19. 1. 2018   #2
-
0
-
Nahlásit jako SPAM
IP: 213.211.51.–
Kit+15
Guru
19. 1. 2018   #3
-
0
-

   

SELECT p.id, p.cena, coalesce(z.hodnota, 0) AS procenta
    FROM produkty AS p
    LEFT JOIN zlavy AS z ON p.id=z.id_cena
    WHERE p.id IN (2, 3)
Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
majo
~ Anonymní uživatel
85 příspěvků
19. 1. 2018   #4
-
0
-

dik Kit.. ja som mal v podstate to iste co ty (bez coalesce), len som celu tu podmienku dal do ON .. na vyfiltrovanie vo WHERE som uplne zabudol :D ..

kedze sa tak ci tak taha vsetko z jednej tabulky a vysledok sa vyfiltruje az potom, nebude to pomalsie, ako keby som vytiahol tie data pomocou dvoch jednoduchych dotazov a v PHP si to spojil? (pytam sa preto, lebo tabulky som doteraz spajal max cez INNER JOIN, ostatnym sa tak nerozumiem ako funguju)

Nahlásit jako SPAM
IP: 188.123.100.–
Kit+15
Guru
19. 1. 2018   #5
-
0
-

#4 majo
Nemusíš se bát, v databázi je to mnohem rychlejší a efektivnější. Funkce coalesce je tam kvůli produktům, které nemají žádnou slevu. Ještě praktičtější by bylo, kdyby sis nechal z DB vypsat i cenu po slevě. Přece jen databáze zaokrouhluje lépe než PHP.

LEFT JOIN se používá přesně pro tyto účely. Jen si musíš uvědomit, že v některých sloupcích z druhé tabulky se ti může objevit NULL, kvůli kterému jsem tam dal tu funkci coalesce().

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
majo
~ Anonymní uživatel
85 příspěvků
19. 1. 2018   #6
-
0
-

super, slape to podla mojich predstav :)

zlavu nevypocitam vo DB, lebo je ich viac typov (percentualna, pevna zlava, pevna ciastka) .. a zaroven sa kontroluje ci cena po zlave nie je nizsia ako nakupna cena..

to by uz bol asi psycho dotaz :D

dakujem ti..

Nahlásit jako SPAM
IP: 188.123.100.–
Kit+15
Guru
19. 1. 2018   #7
-
0
-

#6 majo
Takové dotazy jsou pro databázi úplně v pohodě, má s tím méně práce než PHP. Až budeš psát SQL dotazy na víc než 2 stránky, tak pochopíš, že je to mnohem lepší, než se s tím smolit ve skriptu. A pokud to budeš mít ještě delší, tak si ten dotaz uložíš do databáze a budeš to mít ještě rychlejší.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 13 hostů

Podobná vlákna

Mazanie dat z 2 tabuliek — založil JannyM

Prepojenie tabuliek — založil Daman

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý