Autor | Zpráva | ||
---|---|---|---|
quickspider Profil |
#1 · Zasláno: 3. 9. 2009, 17:50:11 · Upravil/a: quickspider
Dobrý den,
spojil jsem dvě tabulky a funguje výpis ale když přidám where už to nic nevypíše. tabulka dily obsahuje radu a cz, tabulka hudba vše ostatní. $zaznam ="select rada, cz, pisen, interpret, popis from dily join hudba using (cz) where rada=1"; druhý problém je jak vypsat hodnotu která se opakuje na více řádcích pouze jednou? Zkoušel jsem před daný sloupec napsat distinct, ale zadna změna se neprojevila. Databáze je mysql. Děkuji |
||
Taps Profil |
#2 · Zasláno: 3. 9. 2009, 17:59:54 · Upravil/a: Taps
quickspider
za where musíš uvest tabulku.sloupecek $zaznam ="select rada, cz, pisen, interpret, popis from dily join hudba using (cz) where dily.rada='1'"; a pokud chceš hodnoty vypisovat jen jednou tak použiji group by tabulka.sloupecek |
||
quickspider Profil |
#3 · Zasláno: 3. 9. 2009, 20:07:01
něco tam mam špatně, protože to porad nic nevypisuje
|
||
tiso Profil |
#4 · Zasláno: 3. 9. 2009, 20:10:19
quickspider: štruktúru tabuliek a čo je v nich máme hádať?
|
||
quickspider Profil |
#5 · Zasláno: 3. 9. 2009, 21:01:37
tiso:
je to vše co potřebujete? |
||
Kajman_ Profil * |
#6 · Zasláno: 3. 9. 2009, 21:45:33
Pokud db u dotazu nehlásí chybu, tak asi není žádné kombinace shodných hodnot ve sloupci cz a zároveň v rada uložena jednička.
|
||
Kajman_ Profil * |
#7 · Zasláno: 3. 9. 2009, 21:47:04
Ale spíš bych tipnul, že db bude hlásit chybu, že jste nenapsal, ze které tabulky chcete sloupec cz vypsat.
|
||
Taps Profil |
#8 · Zasláno: 3. 9. 2009, 22:36:03 · Upravil/a: Taps
quickspider
možná to bude to vlastností unsigned zerofill Můžeš zkusit tento kod $zaznam ="select rada, cz, pisen, interpret, popis from dily join hudba using (cz) where dily.rada='01'"; |
||
tiso Profil |
#9 · Zasláno: 3. 9. 2009, 23:46:52
Kajman: [#7] presne to som myslel...
quickspider: prečo máš cz v jednej tabuľke ako varchar(30) a v druhej ako text?Podľa tohto stĺpca spájaš tabuľky dokopy. Ty si moc tej teórie o návrhu databáz ako som ti radil nečítal, že? |
||
quickspider Profil |
#10 · Zasláno: 4. 9. 2009, 13:29:37 · Upravil/a: quickspider
Tak se omlouvám všem, protože jsem si nevšiml, že místo hodnoty 1 má být 2. výsledek mám pak takto:
$zaznam ="select dily.rada, dily.cis_dilu, cz, poradi_pisne, pisen, interpret, popis from dily join hudba using (cz) where dily.rada=2 order by dily.cis_dilu, hudba.poradi_pisne"; Jinak bych potřeboval vyřešit ještě výpis z té databáze. Nepatří to sice do této sekce, ale snad to nebude vadit (případně to smažu) teď se mi to vypisuje takto: potřeboval bych aby se mi vypisoval název dílu jen jednou jako tady (html) případně vypsat název třeba nahoře. aktuální kód bez dotazu (viz víše): $vysledek = mysql_query($zaznam); while ($zaznam = mysql_fetch_array($vysledek)) { echo "<tr><td>".$zaznam["cz"]."</td><td>".$zaznam["pisen"]."</td><td>".$zaznam["interpret"]."</td><td>".$zaznam["popis"]."</td></tr>"; } tiso: Četl jsem si normalizaci relačních databází. Jinak díky za upozornění na lišící se typ, už jsem to sjednotil na varchar(30). |
||
Taps Profil |
#11 · Zasláno: 4. 9. 2009, 14:25:09
quickspider
$zaznam ="select dily.rada, dily.cis_dilu, cz, poradi_pisne, pisen, interpret, popis from dily join hudba using (cz) where dily.rada=2 group by dily.nazev_diluorder by dily.cis_dilu, hudba.poradi_pisne "; |
||
tiso Profil |
#12 · Zasláno: 4. 9. 2009, 15:02:29
Taps: ???
|
||
quickspider Profil |
#13 · Zasláno: 4. 9. 2009, 15:06:54 · Upravil/a: quickspider
Taps
když dám group by název sloupce tak to sice vypíše název jen jednou, ale vynechá řádky u všech sloupečků (písničku, interpret a popis). Ty potřebuji zobrazit všechny |
||
Kajman_ Profil * |
#14 · Zasláno: 4. 9. 2009, 15:33:36
Ve while cyklu si ukládejte posledně vypsaný název a pokud bude stejný, dejte tam místo něho jen mezeru.
|
||
Taps Profil |
#15 · Zasláno: 4. 9. 2009, 16:14:11 · Upravil/a: Taps
quickspider
podobný problém se řešil http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=92090 |
||
quickspider Profil |
#16 · Zasláno: 5. 9. 2009, 00:52:58
Kajman_ Nevím jak tu podmínku zapsat
Taps zkoušel jsem to podle toho postupu, ale výsledek vypadá takto: SrážkaSmrtící slávaMezi dvěma kamenyPřekupníciShnilá jablkaUhoď název dílu písnička interpret popis výpis všech hodnot asi mám chybně kód $vysledek = mysql_query($zaznam); $skupina = ""; while ($zaznam = mysql_fetch_array ($vysledek)) { if ($skupina != $zaznam['cz']) { $skupina = $zaznam['cz']; echo $zaznam['cz']; } echo "<tr><td>".$zaznam["cz"]."</td><td>".$zaznam["pisen"]."</td><td>".$zaznam["interpret"]."</td><td>".$zaznam["popis"]."</td></tr>"; } |
||
Kajman_ Profil * |
$vysledek = mysql_query($zaznam); $skupina = ""; while ($zaznam = mysql_fetch_array ($vysledek)) { if ($skupina == $zaznam['cz']) { $zaznam['cz']=' ';//pokud je stejne jak posledne, dej mezeru } $skupina = $zaznam['cz'];//uloz posledni echo "<tr><td>".$zaznam["cz"]."</td><td>".$zaznam["pisen"]."</td><td>".$zaznam["interpret"]."</td><td>".$zaznam["popis"]."</td></tr>"; } |
||
quickspider Profil |
#18 · Zasláno: 5. 9. 2009, 20:28:12 · Upravil/a: quickspider
Kajman_
funguje akorát, když jich je víc než 2 tak to vynechává ob jeden, nešli by všechny? Ještě lépe: nešlo by tam zapsat rowspan=počet řádku stejného dílu aby se nezobrazovaly prázdné buňky? To bude asi přes sum (cz) a proměnou |
||
Kajman_ Profil * |
#19 · Zasláno: 5. 9. 2009, 21:01:09
Druhý pokus
$vysledek = mysql_query($zaznam); $skupina = ""; while ($zaznam = mysql_fetch_array ($vysledek)) { echo "<tr><td>".($skupina == $zaznam['cz']?' ':$zaznam["cz"])."</td><td>".$zaznam["pisen"]."</td><td>".$zaznam["interpret"]."</td><td>".$zaznam["popis"]."</td></tr>"; $skupina = $zaznam['cz']; } |
||
quickspider Profil |
#20 · Zasláno: 5. 9. 2009, 22:10:15 · Upravil/a: quickspider
Kajman_: tohle funguje a nešel by to tam aplikovat ten rowspan
|
||
Kajman_ Profil * |
#21 · Zasláno: 5. 9. 2009, 22:14:29
Jasně, že by to šlo. Snažte se taky trošku sám.
|
||
Časová prodleva: 15 let
|
0