Neden Yarım saat vs saat benim MySQL Grup değil aynı verilerin görüntülenmesi değil dosyaları?

2 Cevap php

Ben farklı ekran türleri 15 dakikalık artışlarla sahip verileri görüntülemek için gerekiyor. Bana sıkıntı veren iki sorgu var. Bir yarım saat verileri gösterir saat diğer verileri göstermektedir. Tek sorun veri toplamlarını sorgular arasındaki değişiklik olmasıdır. Sadece zaman dilimlerinde AT, zaman dilimlerinde arasında olur verileri sayma değil.

Ex: There are 5 things that happen at 7:15am. 2 that happen at 7:30am ve 4 that show at 7:00am.

The 15 minute view displays all of the data. The half hour view displays the data from 7:00am ve from 7:30am but ignores the 7:15am.
The hour display only shows the 7:00am data

İşte benim sorgular şunlardır:

$query="SELECT * FROM data WHERE startDate='$startDate' ve queue='$queue' GROUP BY HOUR(start),floor(minute(start)/30)";

ve

$query="SELECT * FROM data WHERE startDate='$startDate' ve queue='$queue' GROUP BY HOUR(start) ";

Ben ancak tüm veriler dahil olsun var gibi nasıl gruplar halinde verileri çekin?

Is the issue the way the data is stored in the mysql table? Currently I have a column with dates (2010-03-29) ve a column with times (00:00) Do I need to convert these into something else?

2 Cevap

Yanlış 'grup' tarafından yorumlanması ediyoruz. Tek fetchrow() çağrısı ile hepsini alabilirsiniz böylece "grup" birden fazla kayıt yok. Ne olur veritabanı tek bir kayıt içine grup tarafından hükümler eşleşen tüm kayıtları çökecek olduğunu. Basit bir oyun skor tablosu atın:

id   playername  score
----------------------
1    John        23
2    Fred        12
3    Jack        9
4    John        18

Eğer aşağıdaki sorgu yaptıysa: SELECT id, playername, score FROM table GROUP BY playername, aşağıdaki sonuç kümesini almak istiyorum:

id   playername  score
----------------------
1    John        23
2    Fred        12
3    Jack        9

Hey! John 4. nereye gitti? Id # 4 ile satır GROUP BY yan tümcesi eşleşti ve (# 1) maç bulunmuştur ilk sıraya çöktü olmuştur, çünkü, ortadan kayboldu. Kendisi çok yararlı değildir, artık id # 4 ile ilgili tüm verileri kaybettim. Ama bu toplama işlevlerini (toplam, sayım, ortalama, vb ..) devreye girer nerede: SELECT id, playername, SUM(score) FROM table GROUP BY playername:

id   playername  score
----------------------
1    John        41   <---notice the change (23 + 18 = 41)
2    Fred        12
3    Jack        9

Sorgu ile, iki seçeneğiniz var:

  1. Eğer eşleşen süreler her biri için toplam sonuçlar almak o kadar .. (toplayarak, sayma, ortalama, vb)-BY GROUP bırakın, ve sorgu içinde gruplandırılmış veriler üzerinde istediğiniz her türlü hesaplamalar yapmak
  2. BY yan tümceleri GROUP kaldırmak, uygulamanızda istersen hesaplamaları gerçekleştirmek
  3. Sorguda sonuç alanlarına BY yan tümceleri GROUP dönüştürmek, böylece bu yeni sütunlar dayalı kod başına dönemde işleyebilir: SELECT *, HOUR(start), FLOOR(MINUTE(start)/30) FROM data

GROUP BY yanlış ve size sorguda toplama işlevini kullanmayın. GROUP BY bırakın, veritabanı şimdi seçmelisiniz kayıtları ne olduğunu tahmin etmek vardır. Ve veritabanı onlar doğru cevap sadece doğru cevabı almak zorunda, sanırım olmamalıdır.

SQL MODE olarak değiştirin ve doğru bir sorgu oluşturabilirsiniz.