0

我有两张桌子

table1
=======
id   primary
sku
price
vendor

table2
=====
id    primary
sku
alt_sku

基本上,我的搜索词将是 sku 或 alt_sku,基于它,我想从 table1 中选择数据

这样做的最佳方法是什么?我应该创建第三个表来存储 table1.sku 和 table2.sku /table2.alt_sku 之间的关系吗?或者我如何从 table1 获取数据

抱歉,如果这个问题非常愚蠢......我正在尝试学习 mysql,所以,我在 WP 上从未学习过基础知识

4

4 回答 4

0

你到底想用 Table2 做什么?也许更好的方法如下:

Table1 
   id
   price
   vendor

Table2
   Table1Id
   Sku

这样,您可以存储与 Table1 关联的 1-N 个 SKU。如果您只想要 2 个潜在的 SKU,那么您可以在 Table2 中添加一个 SkuType 字段 - 1 个用于主要,2 个用于备用,但这可能对您的需求来说太深了......

并查询:

SELECT T.*
FROM Table1 T
   JOIN Table2 T2 ON T.Id = T2.Table1Id
WHERE T2.Sku = 'SomeSku'
于 2013-02-13T14:17:50.330 回答
0

我认为你的表结构应该是这样的:

table1
=======
id   primary
IdFromtable2
price
vendor

table2
=====
id    primary
sku
alt_sku

您的选择查询将类似于:

SELECT t1.*
FROM   table1 t1
       INNER JOIN table2 t2 ON t1.IdFromtable2 = t2.Id
WHERE  t2.sku = @sku AND
       t2.alt_sku  = @alt_sku
于 2013-02-13T14:20:13.203 回答
0

基本上,表关系的手指规则如下:

如果关系是,one-to-many那么您应该将表中的 PK 保存为many表中的附加列one

如果关系是many-to-many您应该创建第三个表(连接表)。该表将包含两个表中的两个 PK(对于每个 tbl1 PK,您将拥有所有 tbl2 PK,反之亦然)。

这样可以防止重复记录。

于 2013-02-13T14:21:15.993 回答
0

您可以尝试内部连接。假设TERM是您要搜索的 sku。

SELECT
  t1.*
FROM
  table1 t1
  inner join table2 t2 on (t1.sku = t2.sku)
WHERE
     t1.sku = 'TERM'
  or t2.alt_sku = 'TERM'
于 2013-02-13T14:21:16.040 回答