Autor Zpráva
table
Profil *
Dobrý den,
jsem tu opět z dotazem ze kterým si marně lámu hlavu.
Mám tento dotaz do db:
<?php }


$query="SELECT confid,Name,z.nazev AS Teamname,Team,Pos,P,G,A,GP,Time,Pims,plusminus,PPG,SHG,Shoot,Hits,ID FROM `playerstat` p LEFT JOIN zkratky z ON p.Team=z.zkratka WHERE confid=$confid AND Pos='Player'";
If(!Empty($_GET['tym']) && $_GET['tym']!='*')
    $query.="AND z.nazev='".mysql_real_escape_string($_GET['tym'])."' ";
$query.="ORDER BY $sort_order ";
$result = mysql_query($query) or die(Mysql_error());
While($results=MySQL_Fetch_Assoc($result))
{
$teams[]=$results;
$cas=number_format($results['Time']/60,2);
?>
Vypisuje sloupce z tabulky playerstat kde jsou týmy ve zkratce takže následně kouká do tabulky zkratky a porovnává sloupec zkratka a sloupec Team a následně vypíše celý název týmu.
Potřeboval bych to propojit ještě z tabulkou roster kde je ona zkratka týmu (sloupec Team) a také sloupec národnost.
Takže potřebuji vypsat ze tabulky playerstat data týmu kde se celý název týmu vytáhne z tabulky zkratky a z tabulky roster se pomocí zkratky vytáhne národnost.
Pomohl by mi někdo s takto složitým dotazem?
Děkuji


Tak dotaz bych asi měl:
SELECT confid, Name, z.nazev AS Teamname, Team, Pos, P, G, A, GP, Time, Pims, plusminus, PPG, SHG, Shoot, Hits, Pos1
FROM `playerstat` p
LEFT JOIN zkratky z ON p.Team = z.zkratka
LEFT JOIN NHL_Roster1 ON Team = Team1
WHERE confid =3
AND Pos = 'Player'
AND Team = 'KVA'
Teď bych potřeboval ještě přidat AND Name=sloupce z tabulky roster ovšem tam je jméno ve dvou sloupcích Fname a Lname jde nějak v sql dotazu spojit dva sloupce?
Dotaz by měl být asi takto nějak
SELECT confid, Name, z.nazev AS Teamname, Team, Pos, P, G, A, GP, Time, Pims, plusminus, PPG, SHG, Shoot, Hits, Pos1
FROM `playerstat` p
LEFT JOIN zkratky z ON p.Team = z.zkratka
LEFT JOIN NHL_Roster1 ON Team = Team1 AND Name = Fname(druhý sloupec)Lname
WHERE confid =3
AND Pos = 'Player'
AND Team = 'KVA'
tiso
Profil
nejak takto:
SELECT ..., narodnost 
FROM `playerstat` p 
LEFT JOIN zkratky z ON p.Team=z.zkratka
JOIN roster r ON p.Team=r.xyz
WHERE ...;

za narodnost a xyz si dosaď správne názvy stĺpcov
table
Profil *
[#2] tiso
Ano tak nějak jsem to udělal, teď řeším druhý problém zde popsaný.
tiso
Profil
AND Name = CONCAT(Fname, Lname)
table
Profil *
Tak nyní to mám takto, a vrací mi to v POS1 (tabulka NHL_Roster) nulovou hodnotu
SELECT confid, Name, z.nazev AS Teamname, Team, Pos, P, G, A, GP, Time, Pims, plusminus, PPG, SHG, Shoot, Hits, Pos1
FROM `playerstat` p
LEFT JOIN zkratky z ON p.Team = z.zkratka
LEFT JOIN NHL_Roster1 ON Team = Team1
AND Name = CONCAT( Fname1, Lname1 )
WHERE confid =80
AND Pos = 'Player'

Když to dám takto:
SELECT confid, Name, z.nazev AS Teamname, Team, Pos, P, G, A, GP, Time, Pims, plusminus, PPG, SHG, Shoot, Hits, Pos1
FROM `playerstat` p
LEFT JOIN zkratky z ON p.Team = z.zkratka
LEFT JOIN NHL_Roster1 ON Team = Team1
WHERE confid =80
AND Pos = 'Player'
Tak mi to hodnotu v POS1 ukáže správnou ovšem jeden a ten samý řádek se vypíše 26x
Kajman
Profil
table:
ten samý řádek se vypíše 26x

A není to tím, že ten tým má v tabulce NHL_Roster1 26 hráčů? Tedy stále stejná chyba, kdy chybí podmínka na propojení jen s tím jedným správným hráčem?

CONCAT( Fname1, Lname1 )

Ve sloupci Name je spojené jméno a příjmení a mezi tím není mezera?
table
Profil *
je tam mezera
Kajman
Profil
Zkuste jedno z tohoto
CONCAT( Fname1, ' ', Lname1 )
CONCAT_WS( ' ', Fname1, Lname1 )
table
Profil *
Děkuji Vám mnohokrát, obojí funguje.

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: