我不能完全理解這個特定問題,我希望你能提供幫助。我對MySQL並不是太糟糕,但肯定還是個初學者。爲了節省您的時間,我已經將問題分解成最簡單的元素。你需要的任何進一步的信息,只要讓我知道它是什麼,我會直接彈出它。根據子查詢填充列值
我有3個表:動物,所有者和區域
動物表保存所有關於每隻動物的相關數據,以及一個OWNERID柱,它引用了所有者表的ID列。 所有者表類似,並且持有RegionID列(作爲每個所有者地址的一部分),引用區域表的ID列。 我希望在動物表上創建一個列,記錄其擁有者的RegionID。有沒有更新我可以運行將複製這些數據?如果任何人都可以通過這個過程來談論我,我會非常感激。
我的理想最終結果是能夠根據位置(從其所有者位置假定的位置)搜索動物。與RegionID在動物表中的列將允許我(在我的能力水平),這樣做簡單,作爲進一步查詢的一部分
#EDIT基本查詢:
$base= "SELECT p.ID, p.Name, p.Prefix, CONCAT_WS(' ', p.Prefix, p.Name) AS ProfileName,
p.LocalRegNumber, p.GenderID, p.RegulatorID,
p.ColourID, prm_colour.Name AS Colour, p.origColour,
p.DiluteID, prm_dilute.Name AS Dilute,
p.ModifierID, prm_modifier.Name AS Modifier,
p.PatternID, prm_pattern.Name AS Pattern,
p.DateofBirth, p.DateofDeath,
EXTRACT(YEAR FROM p.DateofBirth) AS bYear, EXTRACT(YEAR FROM p.DateofDeath) AS dYear,
p.SireReg, p.DamReg,
p.OwnerID, p.BreederID,
CONCAT_WS(' ', s.Prefix, s.Name) AS SireName,
CONCAT_WS(' ', d.Prefix, d.Name) AS DamName,
CONCAT_WS(' ', o.Firstname, o.Lastname) AS OwnerName,
CONCAT_WS(' ', b.Firstname, b.Lastname) AS BreederName,
prm_gender.Name AS Gender
FROM profiles AS p
LEFT JOIN profiles AS s
ON p.SireReg = s.LocalRegNumber
LEFT JOIN profiles AS d
ON p.DamReg = d.LocalRegNumber
LEFT JOIN prm_colour
ON p.ColourID = prm_colour.ID
LEFT JOIN prm_dilute
ON p.DiluteID = prm_dilute.ID
LEFT JOIN prm_modifier
ON p.ModifierID = prm_modifier.ID
LEFT JOIN prm_pattern
ON p.PatternID = prm_pattern.ID
LEFT JOIN prm_gender
ON p.GenderID = prm_gender.ID
LEFT JOIN contacts AS o
ON p.OwnerID = o.ClientRef
LEFT JOIN contacts AS b
ON p.BreederID = b.ClientRef
";
我再通形成數據以獲得應用哪些過濾器(位置,年齡等)。舉個例子,如果搜索由業主:
$where = "WHERE (p.OwnerID = '$ownedby')";
我再構造查詢:
$complete=$base.$where;
$q= mysql_query($complete);
不要使用UPDATE來複制信息。使用JOIN進行搜索。 – simon 2011-12-14 18:46:49