各位高手們 大家好
今天小弟有PHP程式問題想請教
目前本人正在嘗試利用PHP 進行 選取時間區段 判斷重複用藥
首先這是我的資料列
op5=時間 op111=藥品代碼 op112=藥品名稱
這是目前選取時間區間的程式,當我輸入帳號密碼 與日期區間我就可以去SQL去查詢我資料庫裡的資料
以下是PHP裡的SQL語法
SELECT * FROM dbo.123 where id = 'id' AND type = 'med'AND op5 BETWEEN '2015-03-01' AND '2015-12-31'
而我現在的進度是做到
$result = sqlsrv_query($conn,$sql);
if ($result === false)
{
die( print_r(sqlsrv_errors(), true));
}
?>
<?php
//echo $sql;
while($row=@sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
{
print_r($row); echo "</br>";
透過while($row=@sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC))
我可以將我所有的陣列列出來
以下是我針對日期+代碼+藥名 所 echo 出來的資訊
下面倒數四筆 是7天(含)重複用藥的
就想請問各位高手大大們
我應該如何這四筆資料陣列 再拉出來存到另一筆的陣列 (二維陣列嗎?)
新的
Array ( [num] => 36 [op5] => 2015-10-02 [op111] => A034950100 [op112] => 釋痰錠8公絲(布朗信)〝國嘉〞 [type] => med [op113] => 21.00 )
.....(以下為重複資料的陣列)
還是有其他更優化的方法
感謝各位
估計你想要顯示日期區間全部資料,也要七日內重複用藥資訊吧
我用MySQL 全部放在同一陣列做撒尿牛丸做法是這樣 @@
SELECT
*,
CASE WHEN op111 IN (SELECT
op111
FROM
`123`
WHERE
id = 'c123456789'
AND op5 >= DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - 7 DAY),'%Y-%m-%d')
AND type = 'med'
AND op5 BETWEEN '2015-03-01'
AND '2016-12-31'
GROUP BY op111
HAVING COUNT(op111) > 1) THEN '重複用藥' ELSE '' END `status`
FROM
`123`
WHERE
id = 'c123456789'
AND type = 'med'
AND op5 BETWEEN '2015-03-01'
AND '2016-12-31'
badbayz 您好
AND op5 >= DATE_FORMAT(DATE_ADD(NOW(), INTERVAL - 7 DAY),'%Y-%m-%d')
因為我是使用MSSQL
這段語法好像會有些問題
CONVERT(VARCHAR(10),GETDATE(),126)
我目前我只能先抓到現在的日期....
MSSQL 方式
SELECT
*,
CASE WHEN op111 IN (SELECT
op111
FROM
[dbo].[123]
WHERE
id = 'c123456789'
AND op5 >= DATEADD(day, -7, GETDATE())
AND type = 'med'
AND op5 BETWEEN '2015-03-01'
AND '2016-12-31'
GROUP BY op111
HAVING COUNT(op111) > 1) THEN 'repeat' ELSE '' END [status]
FROM
[dbo].[123]
WHERE
id = 'c123456789'
AND type = 'med'
AND op5 BETWEEN '2015-03-01'
AND '2016-12-31'
SQL只取重覆用藥的記錄, 可以直接加上條件
SELECT * FROM dbo.123 where id = 'id' AND type = 'med'AND op5 BETWEEN '2015-03-01' AND '2015-12-31' *AND HAVING COUNT(id)>1*
如果有php只好loop逐行資料比對(op111)有沒有重覆藥品, 把該行資料加到另外一個陣列, 再顯示出來。