Autor | Zpráva | ||
---|---|---|---|
table Profil * |
#1 · Zasláno: 30. 8. 2013, 15:31:34
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 |
#2 · Zasláno: 30. 8. 2013, 15:44:05
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 * |
#3 · Zasláno: 30. 8. 2013, 15:51:15
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' 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 * |
#5 · Zasláno: 30. 8. 2013, 16:12:01
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 * |
#7 · Zasláno: 30. 8. 2013, 16:17:24
Perfektní, děkuji.
|
||
Časová prodleva: 11 let
|
0