Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中的正确查询_Php_Mysql_Sql - Fatal编程技术网

php中的正确查询

php中的正确查询,php,mysql,sql,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

我在这段代码上得到了一些帮助:

    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
我似乎没有得到一个积极的回应,通过使用该声明…我的假设也可能是关于如何引用每个“行”。 假设在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');
你能看出来问题是什么吗?我已经看了一段时间了,看不出来

此查询工作正常:


在我试图开始工作的查询中…如果,比如说,我的maximumbid比公司收费多300美元(例如),我应该能够在一个循环中重复一些东西,比如,最近的公司是,比你的maximumbid多300美元。我只是不知道如何引用像“raiseby”和“诱惑”这样的别名。如果我将该查询放入sqlfiddle 0 results show…我希望显示与公司和newcost相同的结果-但我也想让用户知道,如果(比如)没有显示结果,他们有多大程度上没有达到目标。

AS
为列而不是行创建别名。你能用一些样本数据做一个sqlfiddle,并显示你想要得到的结果吗?这里有一个fiddle。。。如果使用id存储材料,那么提交表肯定会引用id,而不是材料?!?此外,提交表应仅包含用户名/用户id,而不包含有关用户的其他信息。最后,用户的最高出价大于产品价格,因此我不认为此数据集如何代表问题。谢谢!
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');