Autor Zpráva
quickspider
Profil
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
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
něco tam mam špatně, protože to porad nic nevypisuje
tiso
Profil
quickspider: štruktúru tabuliek a čo je v nich máme hádať?
quickspider
Profil
tiso:

je to vše co potřebujete?
Kajman_
Profil *
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 *
Ale spíš bych tipnul, že db bude hlásit chybu, že jste nenapsal, ze které tabulky chcete sloupec cz vypsat.
Taps
Profil
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
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
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
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
Taps: ???
quickspider
Profil
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 *
Ve while cyklu si ukládejte posledně vypsaný název a pokud bude stejný, dejte tam místo něho jen mezeru.
Taps
Profil
quickspider
podobný problém se řešil http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=9&topic=92090
quickspider
Profil
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']='&nbsp;';//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
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 *
Druhý pokus
$vysledek = mysql_query($zaznam);
$skupina = "";
while ($zaznam = mysql_fetch_array ($vysledek))
{
	echo "<tr><td>".($skupina == $zaznam['cz']?'&nbsp;':$zaznam["cz"])."</td><td>".$zaznam["pisen"]."</td><td>".$zaznam["interpret"]."</td><td>".$zaznam["popis"]."</td></tr>";
	$skupina = $zaznam['cz'];
}
quickspider
Profil
Kajman_: tohle funguje a nešel by to tam aplikovat ten rowspan
Kajman_
Profil *
Jasně, že by to šlo. Snažte se taky trošku sám.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: