簡體   English   中英

從一個表中選擇另一個ID,然后在另一個表中將其替換為與第二個表不同的char

[英]Select from one table where id in another and replace integer with char varying from second table

我有兩個表,一個是用戶日志,按數字存儲用戶

timestamp / user_id / transaction_id / amount

另一個是用戶表,其中包含用戶號及其全名

user_id / fullname

我想選擇整個用戶日志並顯示它,但是沒有顯示他們的號碼,而是從另一個表中顯示了他們的全名,但是我無法使其正常工作。 我不斷修改SQL並將其破壞。 有沒有辦法用php postgresql完成此操作,還是應該使用一個函數? 我不斷收到一個錯誤信息,說user_id是整數,全名不是。請協助。

    $query = "SELECT * FROM user_log 
    INNER JOIN user_staff
ON user_log.user_id=user_staff.user_name
ORDER BY user_log_id DESC LIMIT 200;";

    $result = pg_query($query); 
    if (!$result) { 
        echo "Problem with query " . $query . "<br/>"; 
        echo pg_last_error(); 
        exit(); 
    } 

    while($myrow = pg_fetch_assoc($result)) { 
        printf ("<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>", $myrow['timestamp'], htmlspecialchars($myrow['user_id']), htmlspecialchars($myrow['transaction_id']), htmlspecialchars($myrow['amount']));
    } 
    ?> 

使用此查詢:

SELECT "timestamp", fullname, transaction_id, amount
FROM user_log
JOIN users USING (user_id)

請注意,“ timestamp”是SQL保留字,您不應將其用作列名。 如果必須使用它,請將其放在雙引號中。

也許像這樣:

SELECT user_log.timestamp, users.fullname, user_log.transaction_id, user_log.amount
FROM user_log
INNER JOIN users
ON users.user_id=user_log.user_id 
ORDER BY user_log_id 
DESC LIMIT 200;

您可以在此處閱讀有關SQL Joins的內容: http : //www.w3schools.com/sql/sql_join.asp

暫無
暫無

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

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