我有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) 查询会起作用吗?
我正在回答这个问题,因为我认为如果我不做这种关系,我可以匹配这些领域,无论如何都能使它工作......或者不是吗?
答案 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