2016-03-30 7 views
0

ile katılmak. Sahip olduğum başka bir tablo olan , activities tablosudur. etkinlik tablosundaki auto_increment anahtar ve activity sütun ile primary key sütun. Üçüncü tablo actual_alldetails tablosudur. actual_alldetails numaralı sütunları, auto_increment anahtar ve (emp_code,activity_id,card_id) sütununda composite key ile id sütunlardır. dördüncü tablo, employee tablosudur ve bu tablodaki sütunlar, primary key ve emp_name ile emp_code'dur. ,) (MIN(), MAX (GRUP sütunlarınBen <code>card_id</code> <code>auto_increment</code> anahtar ve <code>cardtpe</code><code>primary key</code> orada olduğu <code>card_type</code> tablo var kompozit anahtar

Karıştırma:

SELECT i.*, 
     d.Date, 
     a.in_time, 
     a.out_time, 
     SEC_TO_TIME(SUM(TIME_TO_SEC(a.out_time))-(TIME_TO_SEC(a.in_time))) AS duration, 
     c.cardtype, 
     a.wo, 
     v.activity, 
     a.quty, 
     a.wastage, 
     a.mcusage, 
     a.actual_wastage 
FROM employee_details i 
INNER JOIN actual_alldetails a ON i.emp_code=a.emp_code 
INNER JOIN attendance_date d ON d.date_id=a.date_id 
INNER JOIN card_type c ON c.card_id=a.card_id 
INNER JOIN activities v ON v.activity_id=a.activity_id 
WHERE d.Date='2016-01-30' 
ORDER BY v.activity; 

Bana gibi hata gösterebilir: -

Sorgumda birini yürütmek çalışıyorum zaman GROUP BY yan tümcesi yok ise GROUP sütunları ile COUNT(), ...) yasa dışıdır.

Neden böyle bir hata gösterdiğini anlamıyorum. Bir birincil anahtar ve bir kompozit anahtar ile iç birleştirme yapıyorum çünkü mi? Tahminim doğruysa o zaman bunları yapmak için doğru sorgu nedir? Lütfen bu sorunu çözmek için bana yardımcı olun.

cevap

0

bu çizgide Daha yakından bak:

SEC_TO_TIME(SUM(TIME_TO_SEC(a.out_time))-(TIME_TO_SEC(a.in_time))) AS duration,

çok garip ve büyük olasılıkla hata mesajı tetikler görünüyor burada bir SUM() işlevi yoktur. SUM'u kaldırmayı deneyin.

1

hata iletisi diyor: hayır GRUP BY yan tümcesinde varsa hiçbir GRUBU sütunlu GRUBU sütunlar (MIN(), MAX(), COUNT(), ...) arasında

Karıştırma yasadışı .

Eğer toplam değeri SUM(TIME_TO_SEC(a.out_time) ve TIME_TO_SEC(a.in_time)

Tam sonuç için umut olduğunu ancak bir bütünleştirici, işlevi uygulamak zorunda ya bilmiyorum olmayan bir toplam bir değer içeren bir seçme deyimini var ikinci değere veya hata mesajının söylediği gibi bir grup eklediniz, böylece neyin gruplanacağını bilirsiniz.i.emp_code

: Ben çalışanlarınızın kimliği değerinde tahmin ediyorum

SELECT i.*, 
    d.Date, 
    a.in_time, 
    a.out_time, 
    SEC_TO_TIME(SUM(TIME_TO_SEC(a.out_time))-(TIME_TO_SEC(a.in_time))) AS duration, 
    c.cardtype, 
    a.wo, 
    v.activity, 
    a.quty, 
    a.wastage, 
    a.mcusage, 
    a.actual_wastage 
FROM employee_details i 
INNER JOIN actual_alldetails a ON i.emp_code=a.emp_code 
INNER JOIN attendance_date d ON d.date_id=a.date_id 
INNER JOIN card_type c ON c.card_id=a.card_id 
INNER JOIN activities v ON v.activity_id=a.activity_id 
WHERE d.Date='2016-01-30' 
GROUP BY i.emp_code 
ORDER BY v.activity; 

:

Örneğin bu sorguyu değiştirmek

İlgili konular