我不能完全理解这个特定问题,我希望你能提供帮助。我对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