Autor Zpráva
arnoost
Profil
Dobrý den,

nasel jsem si návod na http://php.vrana.cz/group-by.php ale chci jeste k datumu poslední odpovědi načíst jméno uživatele z tabulky uzivatelů podle poslení odpovědi. Ale nejak me to nefunguje.? Podadí mi někdo kde je chyba.?

Muj dotaz:
SELECT project_messages.id, project_messages.projectID, project_messages.nazev, DATE_FORMAT(project_messages.date,'%d.%m.%Y %H:%i') AS date, project_messages.private, COUNT(po.reply) AS pocet, MAX(po.date) AS posledni, re.jmeno AS rejmeno, re.prijmeni AS reprijmeni, us.jmeno AS jm, us.prijmeni AS pr
FROM project_messages
LEFT JOIN project_messages AS po ON po.reply = project_messages.id JOIN project_users AS us ON us.user_id = project_messages.userID
LEFT JOIN project_users AS re ON re.user_id = po.userID
WHERE project_messages.projectID = '1' AND project_messages.reply = '0'
GROUP BY project_messages.id
ORDER BY po.date DESC

Se sice načte, ale ne správně.
nightfish
Profil
Se sice načte, ale ne správně.
paráda... ukázka dat, vráceného výsledku a očekávaného výsledku by nebyla?
arnoost
Profil
NEvim zda je to ironie?

Toto je výstup:
Pokusna messagesa
Author: Martin Havelka | Last RE: User Testovací | 2008-09-09 16:36:00 | 2

PHP:
	<?php while ($data = mysql_fetch_assoc($messList)) { ?>
		<? $link = "mess_show.php?messid=".$data[id]."&amp;prID=".$data[projectID]; ?>
		<div class="replycount<?php if($data['private']) { echo " private"; } ?>">&nbsp;</div>
		<div class="right">
			<?php echo $data[date]; ?>
			<br/><span class="green"><?php echo TimeAGO(strtotime($data[date])); ?></span>
		</div>
		<a title="<?php echo $data[nazev]; ?>" class="bigBlack" href="<?php echo $link; ?>"><?php echo $data[nazev]; ?></a>
		<br/><?php echo $lang_label_messautor; ?> <? echo $data[jm]; ?> <? echo $data[pr]; ?> 
		<?php if($data[pocet] > 0) { ?>
			| Last RE: <? echo $data[rejmeno]; ?> <? echo $data[reprijmeni]; ?> | <?php echo $data[posledni]; ?> | <?php echo $data[pocet]; ?>
		<?php } ?>
		<hr size="1"/>
	<? }  ?>
Kajman_
Profil *
Zkuste něco na způsob

SELECT project_messages.id, project_messages.projectID, project_messages.nazev, DATE_FORMAT(project_messages.date,'%d.%m.%Y %H:%i') AS date, project_messages.private, po.pocet, lst.date AS posledni, re.jmeno AS rejmeno, re.prijmeni AS reprijmeni, us.jmeno AS jm, us.prijmeni AS pr
FROM project_messages
LEFT JOIN (select reply, count(*) pocet, max(id) id from project_messages group by reply) AS po ON po.reply = project_messages.id
LEFT JOIN project_messages lst on po.id=lst.id
LEFT JOIN project_users AS us ON us.user_id = project_messages.userID
LEFT JOIN project_users AS re ON re.user_id = lst.userID
WHERE project_messages.projectID = '1' AND project_messages.reply = '0'
ORDER BY lst.date DESC 


Kdyby to nefungovalo, hledejte inspiraci zde:
http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-ro w.html

NEvim zda je to ironie?
Nebyla. Když je příklad toho, co máte za data v tabulkách, co z nich select vrátí a co má vrátit, tak je to jednoznačnější.
arnoost
Profil
Krutý... děkuji :)
Toto téma je uzamčeno. Odpověď nelze zaslat.