MYSQL - 帮助处理更复杂的查询

时间:2010-03-22 11:25:02

标签: mysql

我有两张桌子:

tbl_liststbl_houses

tbl_lists内我有一个名为HousesList的字段 - 它包含以下格式的几个房屋的ID:

1# 2# 4# 51# 3#

我需要能够从tbl_houses WHERE ID =列表中的任何ID中选择mysql字段。 更具体地说,我需要SELECT SUM(tbl_houses.HouseValue) WHERE tbl_houses.ID IN tbl_lists.HousesList - 我想要执行此选择以返回SUM中多行的tbl_lists

任何人都可以提供帮助?  我正在考虑如何在SINGLE查询中执行此操作,因为我不想执行任何mysql loops(在PHP中)。

2 个答案:

答案 0 :(得分:0)

如果您的架构已经修复,我会做两个查询:

SELECT HousesList FROM tbl_lists WHERE ... (your conditions)

在PHP中,拆分列表并创建一个ID $ houseIDs。然后运行第二个查询:

SELECT SUM(HouseValue) FROM tbl-Houses WHERE ID IN (。join(“,”,$ houseIDs。))

我仍然建议将架构更改为:

CREATE TABLE tbl_lists (listID int primary key, ...)
CREATE TABLE tbl_lists_houses (listID int, houseID int)
CREATE TABLE tbl_houses (houseID int primary key, ...)

然后查询变得微不足道:

SELECT SUM(h.HouseValue) FROM tbl_houses AS h, tbl_lists AS l, tbl_lists_houses AS lh WHERE l.listID = <your value> AND lh.listID = l.listID AND lh.houseID = h.houseID

在单个字段中存储列表实际上会阻止您在数据库中对它们执行任何有用的操作,并且您将在PHP和数据库之间来回切换所有内容。此外(没有违法行为),“我的项目非常有活力”可能是“我没有任何要求或设计”的错误借口。

答案 1 :(得分:0)