This is the Match Table I'm trying to achieve 我有一個問題,我正在嘗試解決。請幫助。提前致謝。如何匹配來自兩個表的記錄一次
場景:數據庫中有三個表。假設tblA,tblB和tblC。這是一種服務交換類型的場景。因此,tblA包含請求服務的人的記錄,tblB包含提供服務的人的記錄。所以,tblB應該與在相同的可用時間請求相同服務的人匹配,並將匹配記錄放入tblC。
我已經完成/嘗試過:我已經能夠創建一個查詢兩個表之間發生的匹配,這是一個很好的進展。但是這導致了我的一個主要問題。
問題:問題是基於我所做的,查詢匹配一個人請求多人提供。我希望一旦它將tblA中的記錄與tblB中的某個記錄匹配並放入tblC中,它應該立即刪除,以便它不會將這些記錄與其他人匹配。
示例代碼:
$match = "SELECT * FROM tblmatch";
$Resmatch = mysql_query($match, $localhost) or die(mysql_error());
$row_match = mysql_fetch_assoc($Resmatch);
$mat_offuemail = $row_match['useremail'];
$mat_offustype = $row_match['stype'];
$mat_offtrange = $row_match['trange'];
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "request-form")) {
$insertSQL = sprintf("INSERT INTO tblrequest (orderid, useremail, catname, rdate, stype, trange, rdesc, rloc) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['uorder'], "text"),
GetSQLValueString($_POST['uemail'], "text"),
GetSQLValueString($_POST['rcat'], "text"),
GetSQLValueString($_POST['date'], "text"),
GetSQLValueString($_POST['serv'], "text"),
GetSQLValueString($_POST['trange'], "text"),
GetSQLValueString($_POST['rdesc'], "text"),
GetSQLValueString($_POST['rloc'], "text"));
If ($_POST['uemail'] == $mat_offuemail AND $_POST['serv'] == $mat_offustype AND $_POST['trange'] == $mat_offtrange){
echo "Match Done Previously";
}
else{
$inmatch = "INSERT INTO tblmatch (useremail, userorder, stype, uemail, uorder, trange)
SELECT tbloffer.useremail, tbloffer.orderid, tbloffer.stype, tblrequest.useremail, tblrequest.orderid, tbloffer.trange
FROM tbloffer
INNER JOIN tblrequest
ON tbloffer.stype = tblrequest.stype
AND tbloffer.trange = tblrequest.trange
WHERE tbloffer.useremail != tblrequest.useremail
AND tbloffer.catname != tblrequest.catname
ORDER BY tbloffer.useremail
LIMIT 1";
}
mysql_select_db($database_localhost, $localhost);
$Result1 = mysql_query($insertSQL, $localhost) or die(mysql_error());
$Result2 = mysql_query($inmatch, $localhost) or die(mysql_error());
$insertGoTo = "match.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}
兩條評論 a)使用'mysqli'會更好。 'mysql'已經過時了。 b)製作一個包含匹配行的視圖,而不是將它們插入到新表中會更好嗎?如果您可以爲表A和表B添加表def以及它們如何匹配,那麼 –
會很有幫助。 –
如何添加一個新的布爾列「匹配」?所以你不必太在意桌子背後的邏輯,他們仍然提供服務,畢竟已經匹配,但仍然是服務。 – Jacopo