SELECT
tblassistant.identNumber,
tblreview.ReviewID,
tblreview.Status,
tblreview.AssistantId AS AssistID,
tblassistant.Forename AS AssistForename,
tblassistant.Surname AS AssistSurname,
tblreview.Validation
FROM tblreview, tblassistant
WHERE
tblreview.Validation = 'Y'
AND tblassistant.Test <> 'Y'
AND tblassistant.identNumber = tblreview.assistantidentNumber
AND YEAR(STR_TO_DATE(tblassistant.DateDied,'%d/%m/%Y')) = '2014'
AND MONTH(STR_TO_DATE(tblassistant.DateDied,'%d/%m/%Y')) = '9';
該查詢返回以下,使用PHP和MySQL的工作臺:PHP MySQL的缺失行(錯誤?)
序列號助手ID審閱ID名姓狀態確認
4144449170 55 46 JESSICA BLACK Complete Y
4744443020 56 46 Maureen Gar Y
474444 3620 57 46 SARAH RAN複合Y
4744440430 58 46路易絲WHITý
6144448966 59 48 FIONA LEW複合Y
4444443238 60 48託尼BRETHý
4744442765 61 46 OLIVIA DAVIE複合Y
然而,當我跑下面的查詢:
SELECT
tblreview.AssistantIdentNumber,
tblreview.AssistID,
tblreview.Status,
tblreview.ReviewerId AS RevID,
tblAssistant.Forename AS RevForename,
tblAssistant.Surname AS RevSurname,
tblreview.Validation
FROM tblreview, tblreviewer, tblAssistant
WHERE
tblreview.ReviewerID = tblreviewer.ReviewerID
AND tblreview.Validation = 'Y'
AND tblAssistant.Test <> 'Y'
AND tblAssistant.IdentNumber = tblreview.AssistantIdentNumber
AND YEAR(STR_TO_DATE(tblAssistant.DateDied,'%d/%m/%Y')) = '2014'
AND MONTH(STR_TO_DATE(tblAssistant.DateDied,'%d/%m/%Y')) = '9';
僅返回:
5行PHP
分7排在MySQL工作臺
不退還FREDA和安東尼的記錄,它線軸大量的空間,以查詢的結束。
我曾經嘗試都一個for循環和while循環
for($i=0;$i<$rowCount;$i++)
{
$row[$i]= mysql_fetch_array($ValidationPart);
// writes out HTML table
}
for($i=0;$i<$rowCount;$i++)
{
$row[$i]= mysql_fetch_array($ValidationPart);
if (empty($row[$i]['IdentNumber']))
{
//do nothing
} else {
// Prints out HTML table
}
}
我不得不隱匿了很多本,因此查詢可能不匹配。但是,除了「tblreview.ReviewerID = tblreviewer.ReviewerID」連接和代碼外,它們都是相同的。
編輯:
它變得更糟。那只是一個基本的測試查詢。
有驗證名稱和經理姓名。兩者都需要返回到表格。審覈和驗證的兩個記錄都在同一個表格中。
已經有一個加入該是這樣的:
LEFT JOIN
(SELECT tblreview.AssistantIdentNumber,
tblreview.AssistId,
tblreview.Status,
tblreview.ManagerId AS RevID,
tblreviewer.Forename AS RevForename,
tblreviewer.Surname AS RevSurname
FROM tblreview, tblreviewer
WHERE tblreview.ReviewerId = tblreviewer.ReviewerId
AND tblreview.Status = 'Complete'
AND IsNull(tblreview.Validation)) r
添加其他兩個連接從答案讓查詢任何回報。
必須首先運行子選連接,然後再運行其他兩個連接到其他表。然後在其他表的兩個連接中,您必須明確引用您想要的表。所以在我的情況下,主選擇有「tblname1 v」,然後子選擇是「r」。然後你引用v.ID = othertbl。ID
使用'LEFT JOIN',而不是'WHERE'。 – kotapeter