MySQL连接表;一些最终问题

时间:2010-01-20 11:57:38

标签: php sql mysql database search

首先,我要感谢所有帮助我理解规范化以及如何构建数据库的人。

现在,我还有一些最终问题......

表的链接实际上如何工作?

假设你有三张桌子:

CATEGORY TABLE:
cat_id (PK) -> 1
cat_name -> cars

CATEGORY_OPTIONS TABLE:
cat_opt_id (FK) -> 1
cat_id (FK) -> 1
option_name -> year

CATEGORY_OPTIONS_VALUES TABLE:
cat_opt_val_id (PK) -> 1
cat_opt_id (FK) -> 1
value -> 1999

基本上,值应如下所示:

CATEGORY
(1, cars)
(2, MC)

CATEGORY_OPTIONS
(1, 1, year)
(2, 1, fuel)
(3, 2, type)

CATEGORY_OPTIONS_VALUES
(1, 1, 2010)
(2, 1, Petrol)
(3, 2, Cross)

这是否正确,因为我已将其设置在上面?

我如何搜索这些,逻辑是如何组成的?

我想我需要PHP的查询示例(SELECT等)

假设您要搜索CAR - > year = 2010,fuel = PETROL那么查询怎么样? 并且您想要搜索CAR - >燃料= PETROL,年=任何东西

最后,我应该在任何这些字段上使用AutoIncrement吗?人工智能何时使用?

由于

PS:欲了解更多信息,请查看此问: Can this MySQL db be improved or is it good as it is?

1 个答案:

答案 0 :(得分:0)

您想要SQL连接。表链接是一种完全不相关的技术,与您要实现的目标无关(有关详细信息,请参阅MERGE引擎上的MySQL文档)。一般为:

SELECT f.name, b.value
FROM foo f
LEFT JOIN bar b ON b.foo_id = f.id
WHERE f.age > 10
HAVING b.value IS NOT NULL

为了理解联接的执行方式,您必须了解数据库引擎如何处理查询 - 特别是ON,WHERE和HAVING子句中条件的重要性,这些条款都适用于不同阶段。