在PHP中正确的查询

时间:2015-06-12 22:00:22

标签: php mysql sql

我对这段代码有所帮助:

    SELECT *, IF(newcost - cost > 500, newcost - cost, 0) as raiseby FROM
(
SELECT bp.*, b.company,(IF(bp.cost*1.2 < ls.maximumbid, bp.cost*1.2, bp.cost)) as newcost
FROM `windows_brands_products` bp
LEFT JOIN `windows_brands` b
ON bp.brand_id = b.id
JOIN Windows_last_submissions ls
JOIN windows_materials dm
WHERE ls.username = '$current_user->user_login'
AND bp.width = ROUND(ls.width) 
AND bp.height = ROUND(ls.height) 
AND bp.material IN (dm.name) 
AND bp.type = ls.type 
AND IF (ls.minimumbid != '0.00',bp.cost BETWEEN ls.minimumbid AND ls.maximumbid,bp.cost <= ls.maximumbid)
ORDER BY b.company ASC
) as temptable

目标是显示一条线,说明用户错过了(或某些)公司500美元,并说明用户需要多少增加他们的最大值。 bid(ls.maximum)以便进入查询的参数。在我看来,它看起来像是:

echo 'If you increase your maximum bid by '.$row->raiseby.',. $row->temptable.'can perform your installation';  

我似乎没有通过使用该声明得到积极的回应......我的假设也可能是关于引用每个“行”的方式。   我错误地认为当你在sql中使用“AS”参数时,右边的单词会成为新的行名吗?   任何人都知道如何用这个查询来实现我的结果? 感谢

编辑*我遇到问题,sqlfiddle显示我无法弄清楚的错误。它表示'不正确的整数值:列'id'第1行':

CREATE TABLE windows_brands
(
id int(11),
company varchar(255)
);
INSERT INTO windows_brands
VALUES ('1','Anderson');

CREATE TABLE windows_brands_products
(
id int(11) AUTO_INCREMENT,
brand_id int(11),
width decimal(12,2),
height decimal(12,2),
material varchar(30),
type varchar(30),
cost decimal(12,2),
PRIMARY KEY (id)
);
INSERT INTO windows_brands_products
VALUES ('','2','30','36','wood','double hung','1500.00');

CREATE TABLE Windows_submissions
(
id int(11) AUTO_INCREMENT,
name varchar(30),
username varchar(12),
width decimal(12,2),
height decimal(12,2),
chosenmaterial varchar(30),
type varchar(30),
minimumbid decimal(12,2),
maximumbid decimal(12,2),
PRIMARY KEY (id)
);
INSERT INTO Windows_submissions
VALUES ('','Casey','caseys','30','36','wood','double     hung','1000.00','1700.00');

CREATE TABLE windows_materials
(
id int(11) AUTO_INCREMENT,
name varchar(30),
PRIMARY KEY (id)
);
INSERT INTO windows_materials
VALUES ('','wood');

你能看出问题是什么 - 我已经看了一段时间而且看不到它。

此查询可以正常运行:http://sqlfiddle.com/#!9/22a74/1

在查询中,我正试图开始工作...如果,比如说,我的最高出价300美元(例如)比公司收费的更多,我应该能够在循环中回应一些东西,比如最近的公司是____,比你的最高公司多300美元。我只是不知道如何引用像'raiseby'和'temptable'这样的别名。如果我将该查询放入sqlfiddle 0结果显示...我想要相同的结果,如公司和新成本显示 - 但我也想让用户知道他们错过了目标,如果没有结果显示

0 个答案:

没有答案