Autor | Zpráva | ||
---|---|---|---|
Pako Profil * |
#1 · Zasláno: 25. 6. 2015, 19:34:26
Zdravím, mám takový problém. Mám tabulku do které se mi zapisují objednávky - id_adresa (id adresy z další tabulky s adresami od uživatelů), id_produktu (id produktu z jiné tabulky) a množství. Když si někdo koupí třeba 3 produkty, tak do tabulky s objednávkami se mi vloží 3 řádky, kde id_objednávky bude stejné ale bude se lišit množství a id_produktu. No a teď potřebuji vypsat všechny objednávky. Jenže když vše propojím (join) výsledek je takový, že mám u té objednávky se třemi produkty 3 řádky. Takže když to chci vypsat tak se mi vše vypíše třikrát (adresa). Potřeboval bych aby se mi to vypsalo jako Id objednávky třeba 5. adresa ... a pak 3* různý typ zboží a u nich různé množství.
id. 5 Praha Jméno... produkty 1, 2 a 3 Místo toho mám id. 5 Praha jméno produkty 1 id. 5 Praha jméno produkty 2 id. 5 Praha jméno produkty 3 Jak by se to dalo udělat? Díky |
||
SirDoxik Profil |
#2 · Zasláno: 25. 6. 2015, 20:32:22
Podle mne by to šlo vyřešit podmínkou, která by zjistila, jaká adresa byla před tím a pak by jí už nevypisovala dokud by tam nebyla jiná.
|
||
Pako Profil * |
#3 · Zasláno: 25. 6. 2015, 22:21:32
SirDoxik:
Díky za reakci. Nevím, máš nějakou specifičtější představu? Používám k vypsání foreach(), takže při každém novém řádku jsou i nové hodnoty a nemám to jak porovnat... |
||
juriad Profil |
#4 · Zasláno: 25. 6. 2015, 22:24:01
Viz Srovnání dotazů do závislých tabulek, musíš to pak řešit na úrovni PHP. Databáze ti vrátí záznamy seřazené primárně podle id_adresa. Pak v PHP použiješ obdobu Nejčastější potíže s PHP (FAQ) » Nadpis skupiny nejen při výpisu z databáze.
|
||
tiso Profil |
#5 · Zasláno: 25. 6. 2015, 22:30:29
Zvyčajne sa používajú 2 tabuľky - objednávka a položka objednávky.
Okrem toho si treba dať pozor na to, aby všetky údaje v objednávke boli nemenné. Takže buď zakážeš meniť adresu i produkt, alebo si uložíš všetky údaje, ktoré potrebuješ na vypísanie objednávky priamo do nej (tých 2 tabuliek spomínaných vyššie). |
||
Časová prodleva: 10 let
|
0