使用两个表时的PyMySQL语法

时间:2015-04-04 20:29:00

标签: python mysql syntax pymysql

我有2个mysql表:

-Attendance:

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从'Day Price'表中选择'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'"

此查询不起作用,因此非常感谢任何提供解决方案的帮助!

4 个答案:

答案 0 :(得分:0)

怎么样

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

答案 1 :(得分:0)

您的查询语法不正确。您需要按att id

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

因为表名和列名中的空格而使用反引号(`)。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

你有几个问题。一种是在表列名中使用空格和保留字(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'