从一个表中选择id在另一个表中,并用不同于第二个表的char替换整数

时间:2015-08-09 11:30:34

标签: php postgresql

我有两个表,一个是按编号存储用户的用户日志

timestamp / user_id / transaction_id / amount

另一个是用户表,其中包含用户编号及其全名

user_id / fullname

我想选择整个用户日志并显示它,但不是显示他们的号码,而是从另一张表中显示他们的全名,但我无法正常工作。我一直在修改sql并打破它。有没有办法用php postgresql完成这个或我应该使用一个函数? 我一直收到一个错误,即user_id是整数,而fullname不是 请协助。

    $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']));
    } 
    ?> 

2 个答案:

答案 0 :(得分:2)

使用此查询:

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

请注意&#34;时间戳&#34;是一个SQL保留字,您不应该将它用作列名。如果您必须使用它,请将其放在双引号中。

答案 1 :(得分:1)

也许是这样的:

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联接:http://www.w3schools.com/sql/sql_join.asp