0

我有 2 个表:“catalog”和“press”是“press”子表,我在“press”中通过 id_catalog(指向目录中的“id”)将它们关联起来。

我设法在目录(“名称”)和他们的“新闻”孩子上获得一个字段来测试海豚:

$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)查询会起作用吗?

我正在回答这个问题,因为我认为如果我不做这个关系,我可以匹配这些字段并让它工作......或者不是?

4

1 回答 1

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
于 2013-02-15T23:11:54.840 回答