2016-04-16 78 views
-2

怎麼辦如果MySQL表的名字是改則鏈接名稱變更

如果表名更改然後鏈接名稱更改

例如我有兩個表與工會

$constructs ="(SELECT * FROM sales_media WHERE user_name='$row->user_name') 
UNION 
    (SELECT * FROM rent_media WHERE user_name='$row->user_name') 
ORDER BY City DESC, ID DESC"; 

假設它是一起顯示兩個表結果 如果sales_media表結果找到然後鏈接顯示銷售

這樣

echo "<a href='sales_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>"; 

如果rent_media表結果發現,然後鏈接顯示租用

echo "<a href='rent_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>"; 

我怎麼能做到這一點 幫我解決這個問題

感謝

+0

這兩張表的結構是什麼? – naf4me

+0

你試過左連接嗎?即使在其他表中找不到一個值,左連接也會顯示所有結果 –

回答

0

我花了4讀取到弄清楚你想做什麼,但我認爲我終於明白了

你sh應該在你的2 SELECT中添加一個「標記」,以便知道行從哪個表中獲取。

在我的例子下面我別名「標記」爲typerow

$constructs ="(SELECT 'sales_row' AS typerow, * FROM sales_media WHERE user_name='$row->user_name') 
UNION 
    (SELECT 'rent_row' AS typerow, * FROM rent_media WHERE user_name='$row->user_name') 
ORDER BY City DESC, ID DESC"; 

那麼C和做類似

if ($row->typerow=='sales_row'){ 
    echo "<a href='sales_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>"; 
}else{ 
    echo "<a href='rent_".urlencode(str_replace(' ', '_', $project_title))."-$id.html'>$project_title</a></div>";                           
} 
0

您可以使用類似的東西在你的查詢:

$constructs <<<EOT 
(SELECT 'sales' AS type, * FROM sales_media WHERE user_name='{$row->user_name}') 
UNION 
(SELECT 'rent' AS type, * FROM rent_media WHERE user_name='{$row->user_name}') 
ORDER BY City DESC, ID DESC" 
EOT; 

通過這種方式,您可以在結果集的每一行中看到該條目來自哪個表。現在很容易實現基於該信息的條件:

echo sprintf(
    '<a href="%s_%s-%s.html">%s</a></div>', 
    $newRow['type'], 
    urlencode(str_replace(' ', '_', $project_title)), 
    $id, 
    htmlescape($project_title) 
); 

但是,這看起來像某種類型的黑客。一個典型的情況是,應該仔細查看數據庫方案並詢問是否存在問題。如果它們具有相同的結構和語義,爲什麼這些條目不在同一個表中?