我试图理解来自通过一个公共值链接的2个表的查询应该是什么样子。在我的示例下面,基于我的用户的timezone
记录。
表:qci_users(包含所有用户详细信息的表) 列:
表:时区(所有GMT时区信息) 列:
我现在想查询qci_user.Timezone
和timezones.TimeZone
具有相同值的所有上述列值。
代码:
// get user timezone setting
$sql = ("SELECT TimeZoneID, GMTadjustment, UseDaylightTime, TimeZone, Description, qci_users.Timezone
FROM timezones
WHERE qci_users.Timezone = timezones.TimeZone");
$result = $db->query($sql) or die('<p>Query to get timezone data from timezones table failed: ' . mysqli_error($db) . '</p>');
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$id = $row['TimeZoneID'];
$gmtAdjustment = $row['GMTadjustment'];
$useDaylightTime = $row['UseDaylightTime'];
$tz = $row['TimeZone'];
$description = $row['Description'];
$user_tz = $row['Timezone'];
echo "<option timeZoneId=\"$id\" gmtAdjustment=\"$gmtAdjustment\" useDaylightTime=\"$useDaylightTime\" value=\"$user_tz\">$description</option>\n";
}
查询不会返回任何结果,因此我想知道我在哪里出错?
由于
答案 0 :(得分:1)
您缺少连接条件。你可能想要这个:
SELECT t1.TimeZoneID,
t1.GMTadjustment,
t1.UseDaylightTime,
t1.TimeZone,
t1.Description
FROM timezones t1
INNER JOIN qci_users t2
ON t1.Timezone = t2.TimeZone
答案 1 :(得分:1)
试试这个
SELECT u。*,t。* FROM qci_users u LEFT JOIN timezones t ON u.Timezone = t.TimeZoneID
这会对你有所帮助
由于
答案 2 :(得分:0)
试试这个
SELECT usr.* ,tmz.*
FROM qci_users AS usr JOIN timezones AS tmz ON usr.Timezone = tmz.TimeZone;