MySQL:相关和不相关表之间的区别

时间:2013-02-15 23:08:51

标签: mysql table-relationships

我有2个表:“catalog”和“press”正在“按下”子表,我通过id_catalog(在目录中指向“id”)将它们与“press”相关联。

我设法在目录(“名称”)和他们的“按”孩子这样的一个字段上测试porpouses:

$query="SELECT catalog.book_title, press.* FROM catalog, press WHERE press.id_catalog = $id";

$book_title = mysql_result($result,$i,"_catalog.book_title");
$media_name = mysql_result($result,$i,"_press.media");
$type = mysql_result($result,$i,"_press.type");
$url = mysql_result($result,$i,"_press.url");

echo $book_title $media_name $type $url;

$book_title = mysql_result($result,$i+1,"catalog.book_title");
$media_name = mysql_result($result,$i+1,"press.media");
$type = mysql_result($result,$i*+1*,"press.type");
$url = mysql_result($result,$i*+1*,"press.url");

echo $book_title $media_name $type $url;

在查询中,$ id由GET_ []传递 它返回预期的

这是一个问题:如果我不在数据库中进行关系怎么办? (使用id_catalog上的INDEX) 查询会起作用吗?

我正在回答这个问题,因为我认为如果我不做这种关系,我可以匹配这些领域,无论如何都能使它工作......或者不是吗?

1 个答案:

答案 0 :(得分:0)

我不认为您的问题与索引有关(尽管它有助于提高性能)。我认为问题是这个查询产生了一个笛卡尔积 - 你没有关联这两个表:

SELECT catalog.book_title, press.* 
FROM catalog, press WHERE press.id_catalog = $id

相反,它应该是这样的:

SELECT catalog.book_title, press.* 
FROM catalog 
   JOIN press ON catalog.id = press.id_catalog
WHERE press.id_catalog = $id