Сначала проверьте ваше соединение.
Затем, если вы хотите получить точное значение из базы данных, тогда вы должны написать:
$username = $_POST['username'];
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM Users WHERE UserName =`$usernam`");
Или вы хотите получить LIKE
, то вы должны написать:
$result = mysql_query("SELECT * FROM Users WHERE UserName LIKE '%$username%'");
Мне любопытно узнать о вашей ошибке. это поможет другим дать вам точное решение. Ваш запрос в порядке, он должен возвращать много строк, поскольку вы выполняете перекрестное соединение, поэтому, если сначала из части [( SELECT COUNT(DAY_IN) AS arr FROM t_hospital WHERE DAY_IN between @start_check and @finish_check and RES_DATE between @start_res and @finish_res and ID_daily_hos =@daily_hos group by DAY_IN )e,
] возвращается 4, и позволяет сказать, что другие возвращают 3,5,6, тогда вы получите 4 * 5 * 6 * 3 = 360 строки, и я думаю, вы этого не хотите. чтобы получить точный ответ, запустите каждую часть запроса select на экране печати phpmyAdmin / sqlyog и вставьте его в SO с тем, что вы хотите.
Это довольно распространенный шаблон:
SELECT DAY_IN, COUNT(*) AS arr,
SUM(IF(PAT_STATUS like '%ong%', 1, 0)) AS ONG1,
SUM(IF(PAT_STATUS like '%rtde%', 1, 0)) AS RTED,
SUM(IF(PAT_STATUS like '%pol%', 1, 0)) AS POL1,
SUM(IF(PAT_STATUS like '%para%', 1, 0)) AS para
FROM t_hospital
WHERE DAY_IN between @start_check and @finish_check
and RES_DATE between @start_res and @finish_res
and ID_daily_hos =@daily_hos
GROUP BY DAY_IN
Если я понимаю вас правильно, вот что вы хотите.
SET @start_res = 20150301;
SET @finish_res= 20150501;
SET @finish_check= 20150801;
SET @start_check= 20150301;
SET @daily_hos= 3;
SELECT
(SELECT COUNT(DAY_IN) FROM t_hospital WHERE
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) AS 'arr' ,
(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE
PAT_STATUS like '%ong%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) AS 'ONG1' ,
(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE
PAT_STATUS like '%rtde%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) AS 'RTED' ,
(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE
PAT_STATUS like '%pol%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) AS 'POLI' ,
(SELECT COUNT(PAT_STATUS) FROM t_hospital WHERE
PAT_STATUS like '%para%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) AS 'para'
В SQL Server 2005+ вы можете использовать функции Window. Но он не поддерживается в MySQL.
В подзапросе, выбор операторов должен иметь оператор объединения. Например:
SELECT * FROM (
(SELECT COUNT(..) ...) AS C1
INNER JOIN (SELECT COUNT(...) ...) AS C2
ON <condition>
INNER JOIN ... )
Попробуйте следующее: -
SET @start_res = 20150301;
SET @finish_res= 20150501;
SET @finish_check= 20150801;
SET @start_check= 20150301;
SET @daily_hos= 3;
SELECT
(SELECT COUNT(DAY_IN) AS arr FROM t_hospital WHERE
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) e,
(SELECT COUNT(PAT_STATUS) AS ONG1 FROM t_hospital WHERE
PAT_STATUS like '%ong%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) a,
(SELECT COUNT(PAT_STATUS) AS RTED FROM t_hospital WHERE
PAT_STATUS like '%rtde%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos)b,
(SELECT COUNT(PAT_STATUS) AS POLI FROM t_hospital WHERE
PAT_STATUS like '%pol%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) c,
(SELECT COUNT(PAT_STATUS) AS para FROM t_hospital WHERE
PAT_STATUS like '%para%' and
DAY_IN between @start_check and @finish_check and
RES_DATE between @start_res and @finish_res and
ID_daily_hos =@daily_hos) d
В вашем вопросе упоминается о соединении двух таблиц, но, похоже, имеется только t_hospital
. Возможно, вы захотите обновить свой вопрос информацией о другой таблице.