【发布时间】:2011-02-28 20:52:11
【问题描述】:
对 SQL 查询有点陌生,我需要一些关于我的联接的帮助。
我得到了 gid
对于其中的每一个,我需要从表 wp_ngg_gallery
中获取 name然后加入表 wp_ngg_pictures 并通过字段 imagedate 获取字段 filename 限制 1 顺序 DESC
有人可以帮忙吗?
【问题讨论】:
对 SQL 查询有点陌生,我需要一些关于我的联接的帮助。
我得到了 gid
对于其中的每一个,我需要从表 wp_ngg_gallery
中获取 name然后加入表 wp_ngg_pictures 并通过字段 imagedate 获取字段 filename 限制 1 顺序 DESC
有人可以帮忙吗?
【问题讨论】:
如果您希望它用于多个 gid(为单个选择其他选项):
SELECT gid,name, a.filename
FROM wp_ngg_gallery
JOIN wp_ngg_pictures a
ON a.galleryid = gid
LEFT JOIN wp_ngg_pictures b
ON a.galleryid = gid
AND b.imagedate > a.imagedate
WHERE b.galleryid IS NULL
AND gid IN (1,2,3)
【讨论】:
imagedate 排序,而且你使用的是静态IN () 方法。假设他想配对所有记录。
WHERE b.galleryid IS NULL,而不是a.gallaryid IS NULL,但这是我使用greatest-n-per-group 标签回答的几十个问题的解决方案。但是,OP 并没有说他们需要搜索多个 gid,因此可以通过更简单的查询来回答他们的问题。
我猜:
select wp_ngg_gallery.name, wp_ngg_pictures.filename
from wp_ngg_gallery, wp_ngg_pictures
where wp_ngg_pictures.galleryid = wp_ngg_gallery.gid
order by wp_ngg_pictures.imagedate DESC
limit 0,1
如果你想要一个特定的 GID,你可以这样做:
select wp_ngg_gallery.name, wp_ngg_pictures.filename
from wp_ngg_gallery, wp_ngg_pictures
where wp_ngg_pictures.galleryid = wp_ngg_gallery.gid
and wp_ngg_gallery.gid = $gid
order by wp_ngg_pictures.imagedate DESC
limit 0,1
(如果您查询的是 PHP 中的字符串,则 $gid 有效,但您没有说,如果您正在使用它)
不清楚 wp_ngg_pictures.galleryid 是否是 wp_ngg_gallery.gid 的外键,但根据您提供的信息,它是最有可能的选择。如果不是(如果您可以拥有没有图像的画廊),您可能希望通过添加 and wp_ngg_gallery.gid = $gid 来修改其他人的查询(使用外连接)。
【讨论】:
让我知道如何/如果这有效。如果您以 SQL 格式转储这两个表(从 phpMyAdmin 中),我将创建本地数据库并自己运行(假设这不起作用)。
SELECT
`wp_ngg_gallery`.`name`,
`wp_ngg_pictures`.`filename`
FROM
`wp_ngg_gallery`
LEFT JOIN
`wp_ngg_pictures`
ON
`wp_ngg_gallery`.`gid` = `wp_ngg_pictures`.`galleryid`
ORDER BY
`wp_ngg_pictures`.`imagedate` DESC
LIMIT
0,1;
这是假设您需要一个 JOIN。可以通过一个像样的GROUP BY 声明来完成。
【讨论】:
WHERE wp_ngg_gallery.gid = [GID]。 @Bill:谢谢。