1){while($rs = mysql_fetch_array($query_item) ){$or_it=;$jj_sku=$rs['stock_id'];$item_quantity=$rs['quantity'];$quantity=$quantity*$item_quantity;if($kit>0){$or_it=$or_it_id.$kit;}else{$or_it=$or_it_id;} $sql_sale= insert into `amazon_erp`.`sale_orders_restock` (`number` ,`order_id` ,`order_item_id`,`shipments` ,`payments_date` ,`buyer_email` ,`buyer_name`,`buyer_phone_number`,`sku`,`jj_sku`,`product_name`,`quantity_purchased`,`recipient_name`,`ship_address_1`,`ship_address_2`,`ship_address_3`,`ship_state`,`ship_postal_code`,`ship_country`,`account`,`ship_city`,`cancel_order`,`delivery_areas`,`logistics_number`,`logistics_company`)values ('$maxnum','$or_id','$or_it', '$shipments', '$payments_date','$buyer_email', '$buyer_name','$buyer_phone','$sku' ,'$jj_sku', '$product_name', '$quantity', '$recipient_name', '$ship_address1', '$ship_address2','$ship_address3','$ship_state' , '$ship_postal', '$ship_country', '$zhanghao', '$ship_city','$cancel_order','$delivery_areas','$logistics_number','$logistics_company'); mysql_query($sql_sale); $myaf = mysql_affected_rows(); $kit++; if($myaf>0) { echo import $or_id success $myaf kit_$kit;echo
;$s++;}else{ echo
; echo import $or_id failure $myaf kit_$kit; echo ; echo mysql_error(); echo
; $f++; } $i++;}}else{ $sql_sale= insert into `amazon_erp`.`sale_orders_restock` (`number` ,`order_id` ,`order_item_id`,`shipments` ,`payments_date` ,`buyer_email` ,`buyer_name` ,`buyer_phone_number` ,`sku`,`jj_sku` ,`product_name` ,`quantity_purchased`,`recipient_name`,`ship_address_1`,`ship_address_2`,`ship_address_3`,`ship_state`,`ship_postal_code`,`ship_country`,`account`,`ship_city`,`cancel_order`,`delivery_areas`,`logistics_number`,`logistics_company`)values ('$maxnum','$or_id','$or_it_id', '$shipments', '$payments_date','$buyer_email', '$buyer_name','$buyer_phone','$sku' ,'$jj_sku', '$product_name', '$quantity', '$recipient_name', '$ship_address1', '$ship_address2','$ship_address3','$ship_state' , '$ship_postal', '$ship_country', '$zhanghao', '$ship_city','$cancel_order','$delivery_areas','$logistics_number','$logistics_company'); mysql_query($sql_sale); $myaf = mysql_affected_rows(); if($myaf>0) {echo import $or_id success $myaf;if(empty($jj_sku) or empty($delivery_areas)){ echo ; echo delivery_areas or item_code is empty!!! ; echo ; }echo
;$s++;}else{ echo
; echo import $or_id failure $myaf; echo ; echo mysql_error(); echo
; $f++; } $i++;}} } $line++; } mysql_close($conn); //mysql_close($sql_detrde);echo
;echo
;echo
success: $s;echo
;echo failure: $f;echo ;echo
total: $i;echo
;echo
possible file upload attack!\n;echo ''; echo ''; echo ''; echo ''; ?>
表结构
id int(11) 否
number int(11) 否
order_id varchar(40) 否
order_item_id bigint(40) 否
shipments int(11) 否 0
payments_date varchar(50) 否
buyer_email tinytext 否
buyer_name tinytext 否
buyer_phone_number varchar(50) 否
sku varchar(50) 否
jj_sku varchar(50) 否
product_name text 否
quantity_purchased int(11) 否
recipient_name tinytext 否
ship_address_1 text 否
ship_address_2 text 否
ship_address_3 text 否
ship_state tinytext 否
ship_postal_code varchar(50) 否
ship_country varchar(50) 否
account varchar(30) 否
ship_city varchar(30) 否
cancel_order int(2) 否
delivery_areas varchar(10) 否
logistics_number varchar(20) 否
logistics_company varchar(40)
查询语句
$sql_hkpdf = select * , group_concat(' ' , concat_ws( ' x ', `jj_sku` , `quantity_purchased` ) , if(`quantity_purchased`> 1, '****' , ' ') ),group_concat(' ' , `order_id` , ' ') from ( select * from `sale_orders_restock` order by `jj_sku`) t where `number` =$id and 1=(select count(*) from `sale_orders_restock` where `recipient_name`=t.`recipient_name`) and `quantity_purchased`=1 and `delivery_areas` = 'hks' group by `recipient_name` , `ship_address_1` order by length(group_concat( ' ' , concat_ws( ' x ', `jj_sku` , `quantity_purchased` ) , ' ' )) desc,`jj_sku`; $result = mysql_query($sql_hkpdf);
第一次写入数据之后,查询没问题,能查询到相关数据,一但第二次写入重复的数据,同样的查询语句就查询不出结果,都是空值,请问题这是什么原因呢?
回复讨论(解决方案) 1=(select count(*) from `sale_orders_restock` where `recipient_name`=t.`recipient_name`
你能保证 recipient_name 唯一吗?
recipient_name这个不是唯一的,这里面没有唯一的字段,我后面加了个id字段
我就是需要经常导入重复的数据,才这样的
既然不唯一,那么 1=(select count(*) from `sale_orders_restock` where `recipient_name`=t.`recipient_name`) 在什么时候能成立呢?
当然只在 recipient_name 的值只有一个的时候,否则不就是 2、3、4...了吗
`number` =$id and 1=(select count(*) from `sale_orders_restock`
这里有个number,类似于批号,每次导入的都是不一样的,第一次导入number=1,第二次就会=2,在每批次的情况进下进行汇总的
number 不会作用到 select count(*) from 里面
xuzuning大大,那要怎么写啊
1=(select count(*) from `sale_orders_restock` where `recipient_name`=t.`recipient_name` and 'number'=$id) 这样??
select count(*) from `sale_orders_restock` where `recipient_name`=t.`recipient_name` and 'number'=$id
的含义是:统计表 sale_orders_restock 中满足 recipient_name`=t.`recipient_name` and 'number'=$id 这个条件的记录数
当重复插入后,记录数就可能大于 1
那么 1=(select ... 就不会成立了
大于1,语句够长,索引要好,不然数据量大了,可能会有慢查询
请问xuzuning大大,我应该怎么改语句才能满足我的需要呢??
问题解决了,xuzuning大大帮我看看,这样应该就可以了吧
select * , group_concat(' ' , concat_ws( ' x ', `jj_sku` , `quantity_purchased` ) , if(`quantity_purchased`> 1, '****' , ' ') ),group_concat(' ' , `order_id` , ' ') from ( select * from `sale_orders` where `number` =$id order by `sku`) t where `number` =$id and 1=(select count(*) from `sale_orders` where `number` =$id and `recipient_name`=t.`recipient_name`) and `quantity_purchased`=1 and `delivery_areas` = 'jps' group by `recipient_name` , `ship_address_1` order by length(group_concat( ' ' , concat_ws( ' x ', `jj_sku` , `quantity_purchased` ) , ' ' )) desc,`jj_sku`