Автор Тема: Специфична sql заявка - select + join  (Прочетена 5111 пъти)

thc

  • Напреднали
  • *****
  • Публикации: 184
  • Distribution: FreeBSD
  • Window Manager: Gnome
    • Профил
    • WWW
Здравейте, ползвам CMS php-fusion и искам да си направя панел в който да се показват като линкове двата най нови албума и двата албума в които последно са добавяни снимки. Албумите и снимките се съхраняват в отделни таблици, като в таблицата за снимките имам външен ключ който ми показва към кой албум принадлежи дадената снимка.
Проблема ми е че съм начинаещ в SQL и не знам как трябва да изглежда тази заявка, предполагам че ще се използва обединение на две таблици, но всичките ми опити до сега са без успех.
Някой може ли да помогне?
Благодаря
Активен

CS & WoW players click here

dilyan

  • Напреднали
  • *****
  • Публикации: 186
  • Distribution: Debian, OpenBSD
  • Window Manager: Gnome, xfce
    • Профил
Специфична sql заявка - select + join
« Отговор #1 -: Oct 02, 2006, 17:49 »
не казваш каква ти е базата данни, но трябва да е нещо от сорта на:
select *,* from albumi join snimki on (snimki.kliu4 = albumi.kliu4);

където kliu4 са ти полетата по които навързваш таблиците. В PostgreSQL синтаксиса е такъв, за друга база - сам си го написал: ask google '<img'>
Активен

thc

  • Напреднали
  • *****
  • Публикации: 184
  • Distribution: FreeBSD
  • Window Manager: Gnome
    • Профил
    • WWW
Специфична sql заявка - select + join
« Отговор #2 -: Oct 05, 2006, 15:21 »
Много се мъчих и не можах да постигна елегантното решение за което си мислех. Поствам все пак това което съм направил с идеята да помогне на някой друг и да го видят професионалистите, които да кажат как да стане по добре  ':ok:'

Примерен код
<?php
openside("&#207;&#238;&#241;&#235;&#229;&#228;&#237;&#232; &#224;&#235;&#225;&#243;&#236;&#232;");
$sql = "SELECT album_id, album_title, date_format(from_unixtime( album_datestamp ), '%e/%c/%y at<BR>&nbsp;%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>&nbsp;%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>&#196;&#238;&#225;&#224;&#226;&#229;&#237;&#232;</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=''>&nbsp;<FONT SIZE=1><A HREF=photogallery.php?album_id=$row[0]>$item&nbsp;</A></FONT></TD><TD><FONT SIZE=1>&nbsp;$row[2]</FONT></TD></TR>");
        }
?>
</TABLE>

<TABLE border="0">

    <TR><TD><FONT SIZE="1"><B>&#206;&#225;&#237;&#238;&#226;&#229;&#237;&#232;</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=''>&nbsp;<FONT SIZE=1><A HREF=photogallery.php?album_id=$row0[0]>$item0&nbsp;</A></FONT></TD><TD><FONT SIZE=1>&nbsp;$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>&nbsp;%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=''>&nbsp;<FONT SIZE=1><A HREF=photogallery.php?album_id=$row1[0]>$item1&nbsp;</A></FONT></TD><TD><FONT SIZE=1>&nbsp;$row1[2]</FONT></TD></TR>");
   }
?>

</TABLE>

<?php
closeside();
?>
Активен

CS & WoW players click here

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Специфична sql заявка - select + join
« Отговор #3 -: Oct 09, 2006, 13:57 »
Код
GeSHi (SQL):
  1. SELECT fusion_photos.album_id, album_title, date_format(from_unixtime( photo_datestamp ), '%e/%c/%y %H:%i')
  2. FROM fusion_photos
  3. INNER JOIN fusion_photo_albums
  4. ON fusion_photo_albums.album_id = fusion_photos.album_id
  5. ORDER BY photo_datestamp DESC
  6. LIMIT 0 , 1

Това мисля, че е обединението на твоите две таблици.
« Последна редакция: Mar 06, 2009, 00:29 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

thc

  • Напреднали
  • *****
  • Публикации: 184
  • Distribution: FreeBSD
  • Window Manager: Gnome
    • Профил
    • WWW
Специфична sql заявка - select + join
« Отговор #4 -: 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>&nbsp;%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>&nbsp;%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";
Активен

CS & WoW players click here

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
You can only select  local files.
Настройка на програми
HarleyBG 0 1589 Последна публикация Sep 22, 2005, 00:37
от HarleyBG
You can only select local files!
Хардуерни и софтуерни проблеми
HarleyBG 6 3421 Последна публикация Sep 22, 2005, 22:39
от HarleyBG
Join + union заявка от php
Web development
neter 17 6355 Последна публикация Aug 18, 2008, 13:50
от jivco_t
select от много таблици
Web development
edmon 8 4101 Последна публикация Oct 03, 2014, 23:51
от borovaka
MySQL - резултат от SELECT, променящ се в зависимост от стойност в друга таблица
Общ форум
laskov 10 6293 Последна публикация Oct 14, 2017, 23:05
от laskov