Титла: Специфична sql заявка - select + join
Публикувано от: thc в Oct 02, 2006, 17:18
Здравейте, ползвам CMS php-fusion и искам да си направя панел в който да се показват като линкове двата най нови албума и двата албума в които последно са добавяни снимки. Албумите и снимките се съхраняват в отделни таблици, като в таблицата за снимките имам външен ключ който ми показва към кой албум принадлежи дадената снимка. Проблема ми е че съм начинаещ в SQL и не знам как трябва да изглежда тази заявка, предполагам че ще се използва обединение на две таблици, но всичките ми опити до сега са без успех. Някой може ли да помогне? Благодаря
Титла: Специфична sql заявка - select + join
Публикувано от: dilyan в Oct 02, 2006, 17:49
не казваш каква ти е базата данни, но трябва да е нещо от сорта на: select *,* from albumi join snimki on (snimki.kliu4 = albumi.kliu4); където kliu4 са ти полетата по които навързваш таблиците. В PostgreSQL синтаксиса е такъв, за друга база - сам си го написал: ask google 
Титла: Специфична sql заявка - select + join
Публикувано от: thc в Oct 05, 2006, 15:21
Много се мъчих и не можах да постигна елегантното решение за което си мислех. Поствам все пак това което съм направил с идеята да помогне на някой друг и да го видят професионалистите, които да кажат как да стане по добре Примерен код | <?php openside("Ïîñëåäíè àëáóìè"); $sql = "SELECT album_id, album_title, date_format(from_unixtime( album_datestamp ), '%e/%c/%y at<BR> %H:%i') FROM fusion_photo_albums ORDER BY album_datestamp DESC LIMIT 0 , 2";
$sql0 = "SELECT fusion_photos.album_id, album_title, date_format(from_unixtime( photo_datestamp ), '%e/%c/%y at<BR> %H:%i') FROM fusion_photos, fusion_photo_albums WHERE fusion_photo_albums.album_id = fusion_photos.album_id ORDER BY photo_datestamp DESC LIMIT 0 , 1";
$que = mysql_query($sql); $que0 = mysql_query($sql0); if (!$que) die ('Could not execute query: ' . mysql_error()); if (!$que0) die ('Could not execute query: ' . mysql_error()); ?>
<TABLE border="0">
<TR><TD><FONT SIZE="1"><B>Äîáàâåíè</B></FONT></TD></TR>
<?php while ($row = mysql_fetch_row($que)) { $item = trimlink($row[1], 20); echo ("<TR><TD><img src='".THEME."images/bullet.gif' alt=''> <FONT SIZE=1><A HREF=photogallery.php?album_id=$row[0]>$item </A></FONT></TD><TD><FONT SIZE=1> $row[2]</FONT></TD></TR>"); } ?> </TABLE>
<TABLE border="0">
<TR><TD><FONT SIZE="1"><B>Îáíîâåíè</B></FONT></TD></TR>
<?php
while ($row0 = mysql_fetch_row($que0)) { $item0 = trimlink($row0[1], 20); echo ("<TR><TD><img src='".THEME."images/bullet.gif' alt=''> <FONT SIZE=1><A HREF=photogallery.php?album_id=$row0[0]>$item0 </A></FONT></TD><TD><FONT SIZE=1> $row0[2]</FONT></TD></TR>"); $firstup = $row0[0]; }
$sql1 = "SELECT fusion_photos.album_id, album_title, date_format(from_unixtime( photo_datestamp ), '%e/%c/%y at<BR> %H:%i') FROM fusion_photos, fusion_photo_albums WHERE fusion_photo_albums.album_id = fusion_photos.album_id AND fusion_photo_albums.album_id != $firstup ORDER BY photo_datestamp DESC LIMIT 0, 1";
$que1 = mysql_query($sql1); if (!$que1) die ('Could not execute query: ' . mysql_error()); while ($row1 = mysql_fetch_array($que1)) { $item1 = trimlink($row1[1], 20); echo ("<TR><TD><img src='".THEME."images/bullet.gif' alt=''> <FONT SIZE=1><A HREF=photogallery.php?album_id=$row1[0]>$item1 </A></FONT></TD><TD><FONT SIZE=1> $row1[2]</FONT></TD></TR>"); } ?>
</TABLE>
<?php closeside(); ?>
|
Титла: Специфична sql заявка - select + join
Публикувано от: VladSun в Oct 09, 2006, 13:57
GeSHi (SQL): SELECT fusion_photos.album_id, album_title, date_format(from_unixtime( photo_datestamp ), '%e/%c/%y %H:%i') FROM fusion_photos INNER JOIN fusion_photo_albums ON fusion_photo_albums.album_id = fusion_photos.album_id ORDER BY photo_datestamp DESC LIMIT 0 , 1
Това мисля, че е обединението на твоите две таблици.
Титла: Специфична sql заявка - select + join
Публикувано от: thc в Oct 27, 2006, 19:38
Цитат (VladSun @ Окт. 09 2006,13:57) | Примерен код | SELECT fusion_photos.album_id, album_title, date_format(from_unixtime( photo_datestamp ), '%e/%c/%y at<BR> %H:%i') FROM fusion_photos INNER JOIN fusion_photo_albums ON fusion_photo_albums.album_id = fusion_photos.album_id ORDER BY photo_datestamp DESC LIMIT 0 , 1
|
Това мисля, че е обединението на твоите две таблици. |
Мерси за акъла, стана само че като добавих и GROUP BY, понеже повтаряше едно и също. Ето и цялата зявка:
Примерен код | "SELECT fusion_photos.album_id, album_title, date_format(from_unixtime( photo_datestamp ), '%e/%c/%y at<BR> %H:%i') FROM fusion_photos INNER JOIN fusion_photo_albums ON fusion_photo_albums.album_id = fusion_photos.album_id GROUP BY album_id ORDER BY photo_datestamp DESC LIMIT 0 , 1"; |
|