« 1 2
Autor Zpráva
k
Profil *
eh..
zkus sem dat strukturu tabulky a obsah radku pro dane id (napr. 1)
ty sql dotazy spoustej z phpmyadmina (zalozka sql nebo tak neco)
ZP
Profil *
No to právě chci, přečti si ty příspěvky předtím, mojí snahou je najít maximální KEY pro dané ID a záznam s tímto max. KEY vypsat, to je vše. Bohužel si mi ty ostatní sloupce vypisují z jiného záznamu, a to z toho, zde se prvně vyskytuje stejné ID.
ZP
Profil *
CREATE TABLE `astro_visit_out` (
  `key` int(11) NOT NULL auto_increment,
  `id` int(11) NOT NULL,
  `relation` text character set cp1250 collate cp1250_czech_cs NOT NULL,
  `date` date NOT NULL,
  `time` time NOT NULL,
  `ip` text character set cp1250 collate cp1250_czech_cs NOT NULL,
  `s_out` text character set cp1250 collate cp1250_czech_cs NOT NULL,
  `spend` text character set cp1250 collate cp1250_czech_cs NOT NULL,
  PRIMARY KEY  (`key`)
)


To je SQL dotaz pro tabulku (ta zaznamenává odchody uživatelů, když se správně odhlásí a počítá čas strávený v vsystému).
ZP
Profil *
INSERT INTO `astro_visit_out` (`key`, `id`, `relation`, `date`, `time`, `ip`, `s_out`, `spend`) VALUES (1, 2306, '1ytJuaP8Uy7B3tU5a2mE', '2008-02-18', '00:15:43', 'LAN IP adresa', '1203290143', '0.12 min.'),
(2, 7788, 'HPdAoR7mgCtvTwpPXDnF', '2008-02-18', '00:16:00', 'LAN IP adresa', '1203290160', '0.18 min.'),
(3, 2306, 'iXh8EVmXSpAABRqyvpN2', '0000-00-00', '00:00:00', 'LAN IP adresa', '', ''),
(4, 7788, 'kL9uXIVcXAv5fFPpGxxe', '2008-02-18', '01:17:16', 'LAN IP adresa', '1203293836', '0.3 min.'),
(5, 2306, 'VYB3KHi2hrBd2uTL797O', '2008-02-18', '19:17:13', 'LAN IP adresa', '1203358633', '1.07 min.'),
(6, 2306, 'EQZPHyGFr9D648NQLY7C', '2008-02-18', '20:02:07', 'LAN IP adresa', '1203361327', '16.58 min.'),
(7, 7788, 'x8AJQbaZ8d8iGYqxadP7', '2008-02-18', '21:21:27', 'LAN IP adresa', '1203366087', '77.33 min.'),
(8, 7654, 'SU5fzcCoTsspFm275FIH', '0000-00-00', '00:00:00', 'LAN IP adresa', '', ''),
(9, 2306, 'OoFvLODvOPwZHhcDKAtn', '0000-00-00', '00:00:00', 'LAN IP adresa', '', ''),
(10, 7788, '5VavYeD7yrdC6RUiPnLS', '2008-02-19', '18:29:51', 'LAN IP adresa', '1203442191', '0.27 min.');


A toto je obsah tabulky....
ZP
Profil *
<?php

$spojeni = MySQL_Connect("localhost", "root", "root");
$database = MySQL_Select_DB("astro");
$prefix = "astro_";
$abs_url = "http://localhost/PU/astro";
$cislo = 2306;

$dotaz = MySQL_Query("SELECT s_out, id, relation, `key` AS maximum FROM ".$prefix."visit_out WHERE id = $cislo GROUP BY id ORDER BY `key` DESC LIMIT 1 ");
  // pozor, key je klíčové slovo, proto musíme využít zpětných apostrofů !

$get = MySQL_Fetch_Array($dotaz);
$res_id = $get["id"];
$res_key = $get["maximum"];
$res_relation = $get["relation"];
$res_s_out = $get["s_out"];
echo mysql_error();

echo "Key: ".$res_key."<br />--------------------------<br />";
echo "ID: ".$res_id."<br />--------------------------<br />";
echo "Relace: ".$res_relation."<br />--------------------------<br />";
echo "Sec. ".$res_s_out."<br />--------------------------<br /><br />";
if ($res_s_out == ""):
 echo "Aplikace nebyla řádně ukončena při minulé práci se systémem !";
else:
 echo "Řádně jste ukončili systém při minulé práci, děkujeme ;)";
endif;
?>


... a na závěr, zdroják....
k
Profil *
SELECT `s_out`, `id`, `relation`, `key` AS `maximum` FROM `".$prefix."visit_out` WHERE `id` = $cislo ORDER BY `key` DESC LIMIT 1
jestli tohle nefunguje tak se muzes jit obesit.
ZP
Profil *
SLÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁVA !!!!!!!

F U N G U J E !! :-)))))))

Móóóóc díky. A teď mi řekni, proč zrovna tak ? Ty zpětný apostrofy... ?!
alda78
Profil *
Zdarec, mám takový speciální dotaz vím že v Oracle se to dělá automaticky, ale nevím jak to udělat v MySQL. Potřebuju udělat SELECT z více tabulek přes * a vzhledem k tomu, že v těch tabulkách se některé názvy sloupců jmenujou stejně, při vyčítání dat z výsledku dotazu bych se pomocí stringového klíče ke správné hodnotě nedostal, jedině pomocí int indexu. Proto se ptam jestli jde nějak těm výsledným slupečkům přidělit nějaký prefix podle tabulky do které dané sloupce patří? Kdybych v dotazu SELECT vypisoval nazvy sloupcu, mohl bych je přejmenovat pomocí AS, ale s tou * nevím ja na to. Má představa je že by to mohlo fungovat nějak takhle, ale nefunguje :-)

SELECT z.* as 'z_'.*, zak.* as 'zak_'.* FROM zakaznik as z, zakazka as zak WHERE zak.id_zakaznika = z.id;
Kajman_
Profil *
Myslím, že přímo mysql přejmenovat sloupečky takhle neumí. Ale v aplikaci se asi může podívat na detaily výsledku a podle toho si pak pojmenovat očíslované výsledky. Příklad pro php je např. na
http://cz2.php.net/manual/en/function.mysql-fetch-array.php#66280
bohyn
Profil
alda78
To mas tech sloupcu tolik ze je nemuzes vsechny vyjmenovat? Pouzivat "SELECT *" se moc nedoporucuje, protoze malo kdy skutecne potrebujes vsechny sloupecky a taky kuli prehlednosti.
alda78
Profil *
to: bohyn
no obvykle SELECT * nepoužívám, ale potřebuju to kvůli DAO vrstvě mezi DB a aplikací, na základě dotazu který se dotazuje na více tabulek, potřebuju, aby se mi podle toho vypnily i ostatní objekty podle vazeb mezi tabulkami. Takže to potřebuju hlavně kvůli univerzálnosti. Ten projekt do kterého to potřebuju neměl DAO vrstvu generovanou žádným generátorem, tak to tam musím dopsat ručně a tvořit na to generátor by se mi neoplatilo.
alda78
Profil *
to: Kajman_
Díky moc, to cos poslal tak je sice trošku z opačené strany, že se to pořeší programově, ale neva, použít to půjde. Ještě jednou díky.
« 1 2
Toto téma je uzamčeno. Odpověď nelze zaslat.