我知道这对大多数人来说太简单了,但我无法从我正在使用的3本书中找到它或在教程中找到它。他们都专注于改变数据库的布局,只关注这些事情。
我能够创建一个激活9分钟的程序,以及其他需要做的事情。
但我无法找到如何做这部分。
表-A
(ID, UnitTypeID, ShopLot, )
表-B
(ID, UnitTypeID, ShopLot, ContainerRef, )
Table_C
(ID, PartTypeID, ContainerID, )
UnitTypeID=PAD
UnitTypeID=FROG
的所有ShopLot
实例,其中ContainerRef
与#1 PartTypeID=FLIES
拟合#2,请检查ContainerRef
与ContainerID
匹配的{{1}}的Table_C 当然,这与青蛙和苍蝇无关,但它可以很好地反映出这个过程是如何运作的。
找到有效的' FLIES'我在这部分下面应用了代码并完成了。
如果没有找到,没有任何反应......我猜青蛙又饿了9分钟。
(我愿意接受一个好的查询语言参考建议.MySQL站点/视频/ tuts似乎几乎完全集中在数据类型和数据库布局/结构事物上。很少关于处理实际数据)
答案 0 :(得分:0)
好莱昂尼德是正确的桌子连接是你需要的。 " SQL JOIN子句用于组合来自两个或多个表的行,基于它们之间的公共字段。" - http://www.w3schools.com/sql/sql_join.asp这么简单。对于表A和表B,您说公共字段是ShopLot,而表B和C是ContainerRef与ContainerID匹配。
让托盘一步一步地完成。
首先,让我们从要显示的表中选择列
SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID
你看,ShopLot和ContainerRef中只有一个像我们之前所说的那样是普通字段,并且不需要在一行中两次显示相同的日期。
下一步是查看FROM我们选择此列的位置。在这一步中,我们组合来自这些单独表的行,并基本上创建一个表,其中包含select语句中的所有列。这将是这样的
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId
这里发生了什么。首先我们说SELECT(某事)FROM Table_A和(内部)将她与Table_B联系起来...然后有一个问题如何加入这两个表(基于什么?)?答案是在Table_A.ShopLot和Table_B.ShopLot字段上。从Table_A中取一行,查看ShopLot字段的值,并在Table_B中查找具有该值的所有行(如果有)并加入它们。 Table_C以相同的方式连接,只更改字段名称。
比第三步是制作WHERE子句。这可能是最简单的部分,因为我们现在有一个大表,我们只需要说出我们需要的东西
WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG'
AND Table_C.PartTypeID='FLIES'
就是这样。我尽力让它变得简单。我敢打赌,网上有很多人的解释,只需要做一点搜索......
这是一个完整的代码:
SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId
WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG'
AND Table_C.PartTypeID='FLIES'
我希望这有点帮助它并不复杂,因为它首先看。如果示例有两个表会更好,但它就是它。 GL
答案 1 :(得分:0)
АлександрМиладинович设法简化到“轻松”的东西,我放弃了太高级的考虑。
我唯一要确定的是如何说服MySQL像SQL-Server一样为For Each Row做点什么,我可以以合理的速度回到学习中。