[英]How to select a column in a left join if there is 2 columns with the same name ? [MySql]
我做了一個LEFT JOIN
來從我的數據庫中獲取2個表的值。
查詢是這樣的:
SELECT *
FROM thread
LEFT JOIN comments ON thread.id_thread = comments.id_thread
WHERE id_type = '1'
ORDER BY data DESC, hour DESC
然后我以這種方式輸出值:
<?
while($row = mysqli_fetch_array($query))
{
echo '<div class="col-md-1"></div>';
echo '<div class="col-md-11">';
echo $row['title'] ."<br><br>".$row['content']."<br><br>";
echo $row['content_com'];
echo '<div class="col-md-2 pull-right">'. "date: ".$row['data']."<br>"."author: ".'<a href ="/user.php?id='.$row['username'].'">'.$row['username'].'</a>'.'</div>' ."<br><br>";
echo '<form role="form" action="commit.php" method="post"><div class="col-md-offset-1 col-md-9"><input class="form-control" type="text" name="comm"><input type="hidden" name="thread_id" value="'.$row['id_thread'].'"></div></form> <br><br><hr><br>';
echo '</div>';
}
mysqli_close($connect);
?>
然后在commit.php(表單操作)中:
<?php
session_start();
if(isset($_SESSION['id']))
{
$servername = "mysql9.000webhost.com";
$username = "a5461665_admin";
$password = "xenovia1";
$dbname = "a5461665_pap";
$connect = mysqli_connect($servername, $username, $password, $dbname);
$id = (isset($_GET['id'])) ? $_GET['id'] : $_SESSION['id'];
$ctn = $_POST["comm"];
$com = mysqli_query($connect,"INSERT INTO comments(content_com,id_thread) values ('".$ctn."', '".$_POST['thread_id']."')");
header("location:javascript://history.go(-1)");
if (!$connect) {
die("Connection failed: " . mysqli_connect_error());
}
}
else
{
header(" url=index.php");
}
?>
我的問題是隱藏的輸入框是從表comments
傳遞給表單操作字段id_thread
,但我希望它從表threads
傳遞字段id_thread
,我該怎么做?
SELECT *, thread.id_thread as mycol
FROM
thread LEFT JOIN comments
ON thread.id_thread=comments.id_thread
WHERE thread.id_type = '1'
ORDER BY data desc, hour desc
使用表指定列名稱並使用別名。 因此,像以前一樣對所有列進行SELECT *
,現在將thread.id_thread
和別名mycol
為mycol
。 現在可以作為mycol
使用,而且沒有更多的名字沖突。
您可以使用“別名”或表名 - 然后指定要使用的列
SELECT T.*, comments.id_thread AS comment_thread_id
FROM thread T
LEFT JOIN comments
ON thread.id_thread=comments.id_thread
WHERE id_type = '1' ORDER BY data desc, hour desc
看, T
是表名,線程, T
的alis T.*
將從thread
表中選擇所有cols, comments.id_thread
將從名為comment_thread_id
表comments
獲取列ID
在使用別名/表名旁邊,您還可以使用USING()
而不是ON
來連接表。
SELECT T.*, comments.id_thread AS comment_thread_id
FROM thread T
LEFT JOIN comments
USING(id_thread)
WHERE id_type = '1' ORDER BY data desc, hour desc
以下是兩種方法之間差異的一個很好的解釋: https : //stackoverflow.com/a/11367066/3595565
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.