iT邦幫忙

1

php - 當某些欄位值相同時,只顯示其中一筆 ,並計算有幾筆相同的數量

資料都已經撈出來至陣列中了
https://ithelp.ithome.com.tw/upload/images/20200514/20127121RuKABw4Kdi.jpg
請問有什麼方法可以比較當 'work_order_no','created_at','DDTEXT',{'position'}這四個欄位值相同時只顯示一筆資料就好,並計算有多少筆資料是相同的?

程式碼 :

$sql = "SELECT a.work_order_no,a.product_no,b.ARBPL2,substring(c.created_at,1,10) as created_at ,c.ng_no,d.DDTEXT,c.data,c.ng_count,c.machine_work_id 
		FROM machine_work a,machine b,machine_work_detail c,ngreason d
		WHERE  a.id = c.machine_work_id and a.machine_no = b.ARBPL and c.ng_no = d.ZZDEFECT and c.ng_count > 0 and c.data !='' 
		" ;

$sql.="ORDER BY `a`.`work_order_no` ASC,`c`.`ng_no` ASC";
//echo $sql;

$result = $pdo->query($sql);
		
while($row = $result->fetch(PDO::FETCH_ASSOC))
{
	$obj = json_decode($row['data'],false);
	
	print_r($row);
	echo "<br>";

	echo "<tr>";
	echo "<td>".$row['work_order_no']."</td>";
	echo "<td>".$row['product_no']."</td>";
	echo "<td>".$row['ARBPL2']."</td>";
	echo "<td>".$row['created_at']."</td>";
	echo "<td>".$row['DDTEXT']."</td>";
	echo "<td>".$obj->{'position'}."</td>";
	echo "<td>".$row['ng_count']."</td>";
	echo "</tr>";
	//echo "<br>";

}

?>

我的$sql是從多個table撈進來的整理,不太適合用distinct
有沒有可以往array的方向去解?

Group by
count

有錯輕鞭@~@
dragonH iT邦超人 6 級 ‧ 2020-05-14 15:54:35 檢舉
你的資料應該要先用 OCR 轉成文字才能用

我都用這個

https://www.newocr.com/
dragonH iT邦超人 6 級 ‧ 2020-05-14 16:56:32 檢舉
你看到的是測試用的

已經改了

另外

編輯內文不會有通知喔

2 個回答

1
dragonH
iT邦超人 6 級 ‧ 2020-05-14 16:10:39

sqlfiddle

不知道是不是最佳解

但是應該是個解

s1031532 iT邦新手 5 級 ‧ 2020-05-14 17:02:39 檢舉

感謝你的回答
我有看到你也改成group by
group by其中有一個欄位格式是json格式的話有辦法嗎?

dragonH iT邦超人 6 級 ‧ 2020-05-14 17:15:53 檢舉
0
浩瀚星空
iT邦超人 1 級 ‧ 2020-05-14 16:41:40

提示:

group by

SELECT i1,i2,i3,i4,* FROM db GROUP BY i1,i2,i3,i4

如果還需要計數則用 count

SELECT i1,i2,i3,i4,count(*),* FROM db GROUP BY i1,i2,i3,i4

如果還需要特別的排序。則需要

SELECT i1,i2,i3,i4,count(*),* FROM (
    SELECT * FROM db ORDER BY i1
) AS tempDB GROUP BY i1,i2,i3,i4
s1031532 iT邦新手 5 級 ‧ 2020-05-14 16:59:36 檢舉

感謝你的回答
我group by其中有一個欄位格式是json格式的話有辦法嗎?

json格式也不過是個字串。本身也是可以group的。

只是我想你怕的是如下的情況

{"id":"1","d1":"1","d2":2}
{"id":"1","d2":"2","d1":1}

在 group 會視為不同。這比較無解就是了。

我要發表回答

立即登入回答