2010-06-07 3 views
3

Несколько новых запросов SQL, и мне нужно немного помочь с моим подключением.Помогите создать SQL-запрос

Я поставляется с GID

Для каждого из них мне нужно, чтобы захватить имя из таблицы wp_ngg_gallery

затем присоединиться к таблице wp_ngg_pictures и поле захвата файла предел заказать DESC по области imageda тэ

alt text http://cl.ly/80c22b7010ab8f021558/content

alt text http://cl.ly/bfdf41b3706d25e0ee10/content

Кто-нибудь может помочь?

ответ

0

Я буду гадать:

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 

(в $ GID является действительным, если вы запрос является строка в PHP, вы не сказали, хотя, если это то, что вы используете)

Неясно, является ли wp_ngg_pictures.galleryid внешним ключом для wp_ngg_gallery.gid, но это наиболее вероятный выбор, учитывая предоставленную вами информацию , Если это не так (если у вас есть галереи без изображений), вы можете изменить запрос другого парня (используя внешнее соединение), добавив к нему and wp_ngg_gallery.gid = $gid.

+0

Просто добавлено AND wpp_ngg_gallery.gid = [поставлено число], и это сработало! – wesbos

3

Дайте мне знать, как это работает. Если вы выгрузите обе эти таблицы (из phpMyAdmin) в формате SQL, я создам локальные базы данных и дам ей запустить сам (при условии, что это не сработает).

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; 

Это предполагает, что вам нужно СОЕДИНЕНИЕ. Вероятно, это можно было бы сделать с приличным заявлением GROUP BY.

+1

Это хорошо, но мне нужно указать GID. Например - Где GID = 3 – wesbos

+2

+1 для использования внешнего соединения - не предполагая, что галерея имеет какие-либо изображения. –

+0

@Wes: Затем добавьте 'WHERE wp_ngg_gallery.gid = [GID]' к запросу. @Bill: Спасибо. –

0

Если вы хотите для множественного и 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) 
+0

Я не уверен, что вы там делаете, но он не сортирует 'imagedate', и вы используете статический метод' IN() '. Предположим, он хочет соединить все записи. –

+0

Вам нужно 'WHERE b.galleryid IS NULL', а не' a.gallaryid IS NULL', но это решение, которое я использую для множества вопросов, на которые я ответил, с тегом 'great-n-per-group'. Тем не менее, ОП не сказал, что им нужно искать несколько gids, поэтому на их вопрос можно ответить более простым запросом. –

+0

@Bill: oops, fixed :) (и именно по этой причине я прямо сказал, что нужно использовать, если для мультиплексов) @Josh K: вы неверующие, идите и протестируйте, и пусть будет много радости в новых знаниях. – Wrikken

Смежные вопросы