Autor Zpráva
table
Profil *
Zdravím přátelé.

Prosím o zkontrolování tohoto kodu, problém je že to vypíše jméno které je v tabulce jen jednou třeba 15x a pokaždé je v OVER jiný údaj.

 $query = "SELECT Team,Team1,FName,LName,Pos,Salary,OVER 
          FROM NHL_Roster 
          JOIN NHL_Roster1 ON Team = Team1
          WHERE Team='TB' AND Team1='TB' 
          ORDER BY (Pos='G') DESC,(Pos='D') DESC,(Pos='C') DESC,(Pos='RW') DESC ,(Pos='LW') DESC,Salary,OVER DESC"; 
          $result = mysql_query($query) or die(Mysql_error()); 
          While($results=MySQL_Fetch_Assoc($result))
juriad
Profil
Ale to je správně, výsledek dotazu jsou všechny možnosti, jak je možné záznamy propojit. Pokud chceš pouze jeden záznam od každého jména, musíš mu to říct.

Ukaž celé schéma (tabulky a jejich sloupce) a popiš čeho chceš dosáhnout; nejspíš máš chybně i join.
table
Profil *
Chci z tabulky NHL_Roster vybrat jméno z určitého týmu, zárověň stejné jméno vybrat z tabulky NHL_Roster1 a vypsat z tabulky NHL_Roster Salary a z NHL_Roster1 OVER toho hráče.
NHL_Roster

NHL_Roster1
juriad
Profil
Předpokládám, že dotaz
SELECT * FROM NHL_Roster1 WHERE Team1 = 'TB'
vrátí pro jednoho hráče hodně záznamů. Musíš nějak podrobněji určit, který vlastně chceš.
Buď 1) Maximální, minimálni OVER
Nebo 2) přidat nějakou další podmínku, které bude vyhovovat pouze jeden záznam pro každého hráče.

Příkazem SHOW CREATE TABLE NHL_Roster1 můžeš vypsat podrobnosti o tabulce; je to často lepší než screenshot.
table
Profil *
Není žádný maximální, nebo minimální OVER. OVER je jen jeden.
V týmu označeném TB je 27 hráčů jak v tabulce NHL_Roster tak v NHL_Roster1 samozřejmě že jde o stejné hráče.
V tabulce NHL_Roster je sloupec Salary který potřebuji vypsat a v tabulce NHL_Roster1 je sloupec Over který chci vypsat.
Takže by se mi mělo ve výsledku zobrazit 27 hráčů ze sloupcem Salary a ze sloupcem OVER. U každého hráče je jen jeden údaj.
Takže porovnání dvou tabulek, vypsat jen tým TB a vypsat všech 27 hráčů s těmi údaji.
Snad je to k pochopení.
juriad
Profil
Aha. Musíš propojit samotné hráče, jinak se ti zobrazí jejich kartézský součin.
SELECT Team,FName,LName,Pos,Salary,OVER # zbytečně tahat i Team1 když je stejný jako Team
FROM NHL_Roster 
JOIN NHL_Roster1 ON Team = Team1 AND FName = FName1 AND LName = LName1
WHERE Team='TB' # zbytečné AND Team1='TB' kvůli podmínce v JOINu
ORDER BY (Pos='G') DESC,(Pos='D') DESC,(Pos='C') DESC,(Pos='RW') DESC ,(Pos='LW') DESC,Salary,OVER DESC
table
Profil *
Perfektní, děkuji.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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