1
我報告我的問題是要更簡潔一點。 (刪除其他)顯示來自MySQL數據庫的唯一值
我有一個我建立的時間報告系統,並且我正在嘗試創建一個遵從性類型報告。
Esentially我試圖做到以下幾點:
- 收集所有唯一的名稱($ FN,LN $)在我的數據庫的基礎上,where子句和領域實行= CCV &年= 2016 (例如)
- 然後我也想收拾名($ FN,$ LN),在實踐基礎上的另一份名單= CCV &年= 2016和額外的where子句周= 8
- 這會給我2 DISTINCT列出我可以比較的內容,其差異將爲第8周的傑出時間卡。
從那裏,我需要(通過對比#1以上#2)
至此,以顯示提交(從上面的#3),也是優秀之列所有的名字,我可以得到名單。不過,我當時需要從數據庫中每個人額外的數據顯示它們(區,時間戳等)
所需的輸出會是這樣的:
提交
EMEA
約翰Ĵ
沃利ř
北美
戴維斯d
鮑勃ç
約翰Ÿ
優秀
EMEA
凱爾d
北美
科裏牛逼
休 - [R
約翰Ĵ
LATAM
等....
到目前爲止,這裏是我所擁有的......我確信我正在以這種錯誤的方式去做。
<?php
$con = mysqli_connect("localhost","xxx","xxx!","xxx");
//Get distinct names from practice
if ($con) {
$SQL = "SELECT DISTINCT fn,ln FROM $table WHERE year='$year' AND practice='$practice' AND archived!='yes' ORDER BY region,fn,ln";
}
$result = mysqli_query($con,$SQL);
if (!$result) die('Couldn\'t fetch records');
while ($db_field = mysqli_fetch_assoc($result)) {
$name[] = trim($db_field['fn']. " " .$db_field['ln']);
}
//Get distinct names for current week practice
if ($con) {
$SQL2 = "SELECT DISTINCT fn,ln FROM $table WHERE year='$year' AND week_num='$week' AND practice='$practice' AND archived!='yes' ORDER BY region,fn,ln";
}
$result2 = mysqli_query($con,$SQL2);
if (!$result2) die('Couldn\'t fetch records Again');
while ($db_field = mysqli_fetch_assoc($result2)) {
$name2[] = trim($db_field['fn']. " " .$db_field['ln']);
}
//$SQL3 = "SELECT fn,ln,week_start_date,region FROM $table WHERE fn IN ('".implode("', '", $differences)."')");
mysqli_close($con);
?>
<TABLE><TR><TD>
<B>All Names</B><BR>
<?php
foreach ($name as $item) {
echo $item . "<br/>";
}
?>
</TD>
<TD>
<B>Names for Week 8</B><BR>
<?php
foreach ($name2 as $item2) {
echo $item2 . "<br/>";
}
?>
</TD>
<TD>
<B>Outstanding</B><BR>
<?php
$results = array_diff($name, $name2);
foreach($results as $val) {
echo $val ." - ".$val2."<BR>";
}
?>
</TD>
</TR>
</TABLE>
這就是我正在尋找的......我知道sql級別是一個更好的工作點。我會做一些測試並報告回來!非常感謝。 – Vacek
掙扎與第三個查詢。前兩個工作正常,如果我刪除「,*」.... \t $ SQL3 =「SELECT DISTINCT CONCAT(fn,'',ln)AS'name',* FROM $ table WHERE year ='$ year'AND practice = '''''AND'''AND'name'NOT IN(SELECT DISTINCT CONCAT(fn,'',ln)AS'name'FROM $ table WHERE year ='$ year'AND week_num ='$ week' AND practice ='$ practice'AND archived!='yes')AS asquery ORDER BY region,fn,ln「; – Vacek
將引發以下錯誤:您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在'* FROM rtu_prem_ww WHERE year ='2016'AND practice ='ccv'AND archived!='yes'附近使用正確的語法,並在第1行使用AND' – Vacek