如何在几个表中和每个表之间进行测试?

时间:2015-03-19 19:09:14

标签: mysql

我知道这对大多数人来说太简单了,但我无法从我正在使用的3本书中找到它或在教程中找到它。他们都专注于改变数据库的布局,只关注这些事情。

我能够创建一个激活9分钟的程序,以及其他需要做的事情。

但我无法找到如何做这部分。

表-A

(ID, UnitTypeID, ShopLot, )

表-B

(ID, UnitTypeID, ShopLot, ContainerRef, )

Table_C

(ID, PartTypeID, ContainerID, )
  1. 我首先需要选择Table_A
  2. 中的所有UnitTypeID=PAD
  3. 然后在Table_B中查找UnitTypeID=FROG的所有ShopLot实例,其中ContainerRef与#1
  4. 的结果共享
  5. 然后,对于每个PartTypeID=FLIES拟合#2,请检查ContainerRefContainerID匹配的{{1}}的Table_C
  6. 当然,这与青蛙和苍蝇无关,但它可以很好地反映出这个过程是如何运作的。

    找到有效的' FLIES'我在这部分下面应用了代码并完成了。

    如果没有找到,没有任何反应......我猜青蛙又饿了9分钟。

    (我愿意接受一个好的查询语言参考建议.MySQL站点/视频/ tuts似乎几乎完全集中在数据类型和数据库布局/结构事物上。很少关于处理实际数据)

2 个答案:

答案 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做点什么,我可以以合理的速度回到学习中。