开源ECSHOP中SQL SELECT操作集锦,练习SQL


列出近期看代码过程中的一些SQL 查询操作,以此来学习!


$sql = 'SELECT g.goods_id, g.goods_name, g.shop_price AS org_price, ' . "IFNULL(mp.user_price, g.shop_price * '$_SESSION[discount]') AS shop_price, " 
		. "RAND() AS rnd " . 'FROM ' . $this->pre . 'goods AS g ' . "LEFT JOIN " . $this->pre . "member_price AS mp " . "ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' ";
$sql .= ' WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 AND ' . $type;
$sql .= ' ORDER BY g.sort_order, g.last_update DESC limit ' . $start . ', ' . $limit;



$sql = 'SELECT g.goods_id, g.goods_name, g.goods_name_style, g.market_price, g.shop_price AS org_price, g.promote_price, ' .
		"g.is_best, g.is_new, g.is_hot, g.is_promote, RAND() AS rnd " .
		'FROM ' . $this->pre . 'goods AS g ' .
		'LEFT JOIN ' . $this->pre . 'brand AS b ON b.brand_id = g.brand_id ' .
		"LEFT JOIN " . $this->pre . "member_price AS mp " .
		"ON mp.goods_id = g.goods_id AND mp.user_rank = '$_SESSION[user_rank]' " .
		'WHERE g.is_on_sale = 1 AND g.is_alone_sale = 1 AND g.is_delete = 0 ' .
		" AND g.is_promote = 1 AND promote_start_date <= '$time' AND promote_end_date >= '$time' ";
		
$sql = "SELECT c.cat_id, c.cat_name, cr.recommend_type FROM " . $this->pre . "cat_recommend AS cr INNER JOIN " 
		. $this->pre . "category AS c ON cr.cat_id=c.cat_id";		
		

$sql = "SELECT b.type_id, b.type_money, SUM(o.goods_number) AS number " .
		"FROM " . $this->pre . "order_goods AS o, " .
		$this->pre . "goods AS g, " .
		$this->pre . "bonus_type AS b " .
		" WHERE o.order_id = '$order_id' " .
		" AND o.is_gift = 0 " .
		" AND o.goods_id = g.goods_id " .
		" AND g.bonus_type_id = b.type_id " .
		" AND b.send_type = '" . SEND_BY_GOODS . "' " .
		" AND b.send_start_date <= '$today' " .
		" AND b.send_end_date >= '$today' " .
		" GROUP BY b.type_id ";	
		
SQL函数:
函数的返回值一般用AS来获得访问名
AVG() 函数返回数值列的平均值。NULL 值不包括在计算中。
COUNT() 函数返回匹配指定条件的行数。
SUM 函数返回数值列的总数(总额)。 eg:SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
MAX 函数返回一列中的最大值。NULL 值不包括在计算中。 
IFNULL(column_name, value) 如果column_name为NULL,则用value取代,非NULL,则用真实值

掌握了left join、right join、inner join的联合查表方式后,基本就能满足需求了。

inner方式与from table1, table2的效果是等同的,均只取交集

使用left join 或者right join 时on条件只用于生成临时表,where条件是最终过滤临时表时采用的。left join生成的临时表会包含左表里的所有记录。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值