簡體   English   中英

MySQL:相關表和不相關表之間的區別

[英]MySQL: Difference between relating and not relating tables

我有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)該查詢有效嗎?

我正在回答這個問題,因為我想如果我不做這種關系,我可以匹配這些字段並使它正常工作……還是不?

我認為您的問題不在於索引(盡管這將有助於提高性能)。 我認為問題在於此查詢產生的是笛卡爾積-您沒有關聯這兩個表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM