具有条件的2个表的SQL查询

时间:2017-03-11 06:57:54

标签: php mysql sql

我试图理解来自通过一个公共值链接的2个表的查询应该是什么样子。在我的示例下面,基于我的用户的timezone记录。

表:qci_users(包含所有用户详细信息的表) 列:

  • ID
  • 时区

表:时区(所有GMT时区信息) 列:

  • TimeZoneID
  • GMTadjustment
  • UseDaylightTime
  • 时区
  • 描述

我现在想查询qci_user.Timezonetimezones.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";
}

查询不会返回任何结果,因此我想知道我在哪里出错?

由于

3 个答案:

答案 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;