Nejste přihlášeni
Stránky 1
Dobrý den,
chtěl jsem se zeptat na dotaz na mysql s 2-mi tabulkami.
Jedna tabulka bude mít klienty a druhá smlouvy. Nejlépe bych potreboval jeden vystup, kde budu mit klienty a smlouvy. Jestli by slo aby jsem pak pres jeden for vypsal jak klienty tak smlouvy tak, aby byl vystup takto :
Klient 1
smlouva 1
smlouva 2
Klient 2
smlouva 3
smlouva 4
smlouva 5
atd...
nebo si nacist klienty a pres fory pak nacitat smlouvy. Potreboval bych to pro mensi zatez na server. Hlavne aby to bylo co nejrychleji zobrazeno kdyby tam byli stovky klientu a kazdy klient prumerne tak 7 smluv.
Dekuji za odpoved.
Offline
Nevím jaká je struktura tabulek, tak pokud jsou tabulky provázány (např. id klient) je jednodušší provést jeden dotaz, než stovky dotazů (podle počtu klientů).
http://www.w3schools.com/sql/sql_join_left.asp
http://www.itnetwork.cz/mysql-tutorial- … ce-tabulek
https://www.interval.cz/clanky/sql-spoj … a-pohledu/
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Jsou spojeny ID. Smlouvy mají ID klienta. Klient je Hlavní tabulka. Smlouvy jakoby dodatková. Celý systém byl navrhnutý, že se načte klient a s ním pak smlouvy. Ale teď chce export klientů a s nimi i smlouvy a to tak, jak jsem to napsal. Jen nevím Jak spojit dotaz tak, abych během jednoho či dvou vnořených foru měl vypsat klienty a smlouvy ve správném pořadí a to ještě tak, abych řadil smlouvy k uživatelům. Hlavně aby mi to neustále nevypisovalo
klient 1
smlouva 1
klient 1
smlouva 2
klient 1
smlouva 3
klient 2
smlouva 4
Aby to byl klient jeho smlouvy. Klient 2 a jeho smlouvy. Tyhle dotazy jsem nepotřeboval a tím nevím co a jak. Jsem kodér, ale ne databázový.
Pokud pošlete jednoduchý příklad, tak i z toho se poučím a přizpůsobím kód podle toho. Jen nechci řešit stovky dotazů a stovky foru. Už to se mi zdá hloupé.
Děkuji za odpověď.
Offline
V uvedených odkazech jsou i příklady, stačí si vybrat...
EDIT:
nebo zde uveďte Váš "nefunkční" dotaz.
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
SELECT `klienti`.*, `smlouvy`.* FROM `klienti` LEFT JOIN `smlouvy` ON `klienti`.`id` = `smlouvy`.`klient_id` GROUP BY `klienti`.`id`
Nazvy si upravte podla potreby.
Hadam to pojde, uz dlhsie som nepouzil joiny
Portfólio
E-mail: eduard(at)karpiel.sk
Offline
no... tak jsem zjistil, ze mi to vypisuje takto
crexwergv oiuiguf
Základní údaje
Pohlaví : Muž
Datum narození : Není zadáno
Smlouva : 1430295061
crexwergv oiuiguf
Základní údaje
Pohlaví : Muž
Datum narození : Není zadáno
Smlouva : 1430295079
a ja to potrebuji takto
crexwergv oiuiguf
Základní údaje
Pohlaví : Muž
Datum narození : Není zadáno
Smlouva : 1430295061
Smlouva : 1430295079
jde to nejak osefovat pres mysql nebo to musim osefovat pres fory a dotazy ve forech?
Dekuji za odpoved.
Offline
to nejde, to uz musite upravit v php, pripadne alternativne to muzete teoreticky udelat jako jednu transakci(v innodb), nebo pokud "to staci", tak proste jen dva jednoduchy sql dotazy - to je samozrejme ale jen pro 1 klienta
select * from klienti where klient_id = cislo;
select * from smlouvy where klient_id = cislo;
(misto hvezdicky staci rict pole, ktere jsou potreba)
rozdeleni do dvou dotazu ale muze byt problematicke (pokud nejsou jako jedna transakce), proto je v tomhle případě lepší řešení od @Lkopo, nemluve o tom pokud zaznamy chcete zobrazit vsechny(nebo vic jak pár), tak je xx dotazu na databazi taky spatne
W3C validator | Performance tools | Stavové kódy HTTP | Fiddle | Codepen | Ideone | XAMPP
Offline
To co to vypisuje je v pořádku. Stačí to jen upravit v php pro výpis podle představ.
Smyčku for-next bych raději nepoužíval - musíte navíc zjistit počet záznamů a stejně se neobejdete bez úpravy pro výpis klienta.
řešil bych např. takto:
... dotaz ...
$klient = 0;
while ($pole_vysledku = mysql_fetch_assoc($dotaz))
{
if ($klient == $pole_vysledku['klient_id'])
{
echo ... vypsat co je potřeba, v případě stejného klienta ...
} else {
echo ... vypsat v případě dalšího klienta ...
$klient = $pole_vysledku['klient_id'];
}
...
echo ... vypis údajů ...
...
}
Jak už jsem již uváděl, vložte sem Váš kód a pak se můžeme o něčem smysluplném bavit, tak aby to fungovalo podle Vašich představ.
Uvedl jste, že jste kodér, kodér čeho?
1. Murphyho zákon:
Na počátku nebylo nic. I to se pokazilo!
stránky: CMS test
kontakt - instalace systémů, MySQL, FTP přístup, ...
Instalační balíky vybraných CSM
Problémy spojené s provozem služeb Endora, řešte na tomto fóru.
Offline
Stránky 1