[MySql/PHP] Jedna tabela i kilka warunków


(Janek Max) #1

Witam. mam problem od którym meczę się już parę godzin. Mam 3 zapytania :

Chciałbym połączyć to w jedno zapytanie dzięki któremu mógłbym mieć te 3 wyniki w $amienna[0] $amienna[1] $amienna[2]

Próbowałem z UNION ale wszystko zliczało w 1 tabele

Ma wyjść coś takiego Wysłąne:1 Odebran:2 NOwe:3


(ra-v) #2
SELECT

( SELECT COUNT(*) FROM messages WHERE odbiorca=$id AND bla>0 LIMIT 1 ) as `col1` ,

( SELECT COUNT(*) FROM messages WHERE odbiorca=$id AND bla=1 AND nieprzeczytana='yes' LIMIT 1 ) as `col2` ,

( SELECT COUNT(*) FROM messages WHERE wyslane=$id AND saved='yes' LIMIT 1 ) as `col3` ,

FROM messages LIMIT 1

Może tak? Można też spróbować z LEFT JOIN-em.


(Janek Max) #3

Dzięki, wszystko działa jak trzeba :smiley:


([alex]) #4

Nie sądzę aby to działało poprawnie, te limit 1 spowodują że nigdy nie zobaczysz że odebrano 2 wiadomości.

Może lepiej tak:

select 

  sum(if(odbiorca=$id,1,0)) col1,

  sum(if(odbiorca=$id and bla=1 AND nieprzeczytana='yes',1,0) col2,

  sum(if(wyslane=$id,1,0)) col3 

where 

  (odbiorca=$id and bla>0) or ( wyslane=$id AND saved='yes')

;

(ra-v) #5

Przecież jest COUNT(*), a LIMIT tyczy się ilości zwracanych rekordów a nie ilości zliczanych rekordów.