En Sevdikleri tarafından SQL Listesi Oyunu Veritabanı

0 Cevap php

PMP Yani benim sitenin ana sayfasında ekranın uygulamaları. Kullanıcılar (her uygulama varsayılan Nötr / Hiçbiri derecelendirilmiştir.) 'Gibi', 'Beğenmedim', ya da 'Nötr / Yoktur' ile bu uygulamaları oylayabilir

Ana sayfada ben yüksek farkla oyunları listelemek istedim (Yani toplam gibi en al ve daha sonra bunları birbirine ekler hoşlanmama olacaktır.) Ben bu doğru yapmak için bir SQL deyimi yapma zorluk yaşıyorum.

Benim tablo yapıları şu şekildedir:

appinfo:
   id;
   name;
   genre;
   ...

appinfo temelde uygulaması için tüm meta tutar. Değerlendirmesi ile ilgili bir şey yok.

Sonra, ben apprating tablo vardır:

apprating:
   username;
   app_id;
   rating;

Tüm değerlendirme saklandığı yerdir. Ratings -1 (Beğenmedim), 0 (Nötr / Yoktur) ve 1 (gibi) olarak saklanır. Ben tam deyimi kurulumu daha kolay olacak bu yapıyla umuyordum. Herkes bir yazı ile bana yardımcı olabilir misiniz? Ben sıralama düzgün yapar ya da derece sayısını görüntülemek gülünç uzun bir yazma sona erdi.

SELECT appinfo.title, appinfo.description, appinfo.username, appinfo.genre 
FROM appinfo 
LEFT JOIN appratings ON appinfo.id=appratings.app_id 
GROUP BY appinfo.id 
ORDER BY SUM(appratings.rating) DESC

ÖYLE şeytani SQL yolları aracılığıyla sadece bir SQL deyimi ve düzeltme bu okuma için teşekkürler güzel olurdu!

UPDATE:

Bir rating sistemi vardı önce Yani, ben o PHP I mysql_fetch_array, daha sonra döngü ve ayrıntıları yankı etkili beni gibi şeyler icar ediyorum yılında, benim SELECT deyimi olurdu:

...
<p class="description"><?php echo $gameinfo['description']; ?></p>
...

O oldu oyunun açıklamasını kapmak ve yankı Hangi. Şimdi, açıklama hala çalışır, ama şimdi benim gibi en / Beğenmedim ait olan SUM kullanarak içerir garip bir sistem ve appinfo.id ve apprating.app_id için bir JOIN deyimi var, çünkü ben şimdi sorunlar yaşıyorum

  1. Geçerli oyunun kimliği yineleyen, (yankılanan $gameinfo['id'] şey yankı yok.)
  2. Nasıl gibi / Beğenmedim yılların SUM almak ve bu yankı?

UPDATE 2

SQL deyimi bana echo $gameinfo['totalscore'] gibi / Beğenmedim farklılıkları almak ve sadece kimliği yankı edebilmek için SELECT appinfo.id eklemek zorunda yazmak için izin verdi.

0 Cevap