2016-03-21 20 views
0

bu yüzden birkaç hafta içinde çözmeyi denediğim bir sorunum var, ama hiçbir çözüme gelmiyorum. TablesPostgresql sorgu sorunu

Açıkçası (kolay) onlara katıldı: Yani burada ben bir sorgu yapmaya çalışıyorum tablolardır

SELECT a.date,b.title,b.author,u.nick 
FROM book_add a 
INNER JOIN user u on(a.user_fk=u.id) 
INNER JOIN book b on (a.book_fk=b.id) 
INNER JOIN status s ON(a.status_fk=s.id) 
WHERE s.description='active'; 

Şimdi burada sorun gelir: Ben satırları sipariş etmek istiyorum Tarih ay ve farklı onları, böylece son eklenen satır (en yeni tarih ile) ilk satırdır. Ancak, farklı olduklarında sonuçlar çok tuhaftır. Bu çalıştı:

SELECT a.date,b.title,b.author,u.nick 
FROM book_add a 
INNER JOIN user u on(a.user_fk=u.id) 
INNER JOIN book b on (a.book_fk=b.id) 
INNER JOIN status s ON(a.status_fk=s.id) 
WHERE s.description='active' ORDER BY a.date DESC; 

bu i distinctig a.book_fk sonuçları yanlış deneyin bir kez olsa çalışır: Bunun gibi

SELECT DISTINCT ON(a.book_fk)a.book_fk,a.date,b.title,b.author,u.nick 
FROM book_add a 
INNER JOIN user u on(a.user_fk=u.id) 
INNER JOIN book b on (a.book_fk=b.id) 
INNER JOIN status s ON(a.status_fk=s.id) 
WHERE s.description='active' ORDER BY a.date DESC; 

Hatta çalıştı yaklaşımlar, ancak başarılı olamadı:

SELECT * FROM (SELECT DISTINCT 
ON(a.book_fk)a.book_fk,a.date,b.title,b.author,u.nick 
FROM book_add a 
INNER JOIN user u on(a.user_fk=u.id) 
INNER JOIN book b on (a.book_fk=b.id) 
INNER JOIN status s ON(a.status_fk=s.id) 
WHERE s.description='active') res ORDER BY res.date DESC 

Birisi bana yardımcı olabilir mi? Çok mutlu olurum! Teşekkür ederim!

+0

, bazı sütun adları – Nano

+0

Burada yanlış stil görmek ve tekrar düzenlemek: Bu durumda bu çalışması gerekir. –

+0

Çok teşekkür ederim! – Nano

cevap

0

En son kullanıcı/durumla birlikte kitap başına bir satır almaya çalışıyorsunuz gibi mi geliyor? ,

Üzgünüm
SELECT DISTINCT ON(a.book_fk) 
     a.book_fk, a.date, b.title, b.author, u.nick 
FROM book_add a 
INNER JOIN user u on(a.user_fk=u.id) 
INNER JOIN book b on (a.book_fk=b.id) 
INNER JOIN status s ON(a.status_fk=s.id) 
WHERE s.description='active' 
ORDER BY a.book_fk, a.date DESC 
; 
+0

Cevabınız için teşekkür ederiz. Bu benim elde etmeye çalıştığım şey, ama bir şekilde 3 eşit kitap derlediğimiz tarih en yeni değil ve bu küçük ayrıntı nedeniyle düzgün bir şekilde sipariş vermiyor. – Nano