使用两个表时的 PyMySQL 语法

PyMySQL Syntax when using two tables

我有 2 mysql tables:

-出勤率:

att id      | child id
--------------------------
A0012       | C002
A0034       | C001
A0064       | C003
A0065       | C003
A0066       | C003

日价格:

att id      | price  | date
--------------------------
A0012       | 30.00  | 2015-01-26
A0034       | 45.00  | 2015-01-26
A0064       | 62.50  | 2014-12-30
A0065       | 20.0   | 2015-01-02
A0066       | 90.0   | 2015-01-03

我正在使用 pymysql 到 select 来自 'Day Prices' table 的 'price' 和 'data' 列。但是,我只想要对应于 'child id' 即 'C003' 的此类数据。这样我应该只得到:

 price  | date
--------------------
 62.50  | 2014-12-30
 20.0   | 2015-01-02
 90.0   | 2015-01-03

这是我的查询:

"SELECT price, date FROM Day Prices WHERE att id FROM Attendance = att id FROM Day Prices WHERE child id = 'C003'"

此查询无效,因此非常感谢任何提出解决方案的帮助!

怎么样

select d.price, d.date FROM `Day Prices` d
join Attendance a 
on a.att id = d.att id
where a.child id = 'C003';

您查询的语法不正确。您需要通过 att id:

加入 tables
SELECT 
    price, date 
FROM 
    `Day Prices` as dp, `Attendance` as a
WHERE 
    dp.`att id` = a.`att id` AND 
    a.`child id` = 'C003'

由于 table 和列名中的空格而使用反引号 (`)。

当您使用带空格的 table 名称时,您应该使用反引号 (`):

SELECT price, date FROM `Day Prices`, Attendance 
WHERE `Day Prices`.att_id = Attendance.att_id 
      AND Attendance.child_id = 'C003'

你有几个问题。一是您在 table 列名称中使用了空格和保留字 (date);这使得编写查询变得更加困难。另一个是你需要了解JOIN

这个查询应该适合你。

 SELECT d.price, d.`date`
   FROM `Day Prices` d
   JOIN Attendance a ON d.`att id` = a.`att id`
  WHERE a.`child id` = 'C003'