Php 如何对MYSQL进行连接查询?
我有两个mysql表:Php 如何对MYSQL进行连接查询?,php,mysql,sql,console,Php,Mysql,Sql,Console,我有两个mysql表:cs\u lots&cs\u lots\u history。相关:id=id\u lot 我需要编写一个查询,该查询将显示数组中每个cs\u lots批次的ID,如果ID=ID\u lot,还需要从cs\u lots\u历史记录中显示用户名 查询,我有: SELECT cs_lots_history.*, cs_lots.id as csid, inv_id, inv_assets, inv_image, inv_color, inv_name, inv_rarity,
cs\u lots
&cs\u lots\u history
。相关:id
=id\u lot
我需要编写一个查询,该查询将显示数组中每个cs\u lots
批次的ID,如果ID=ID\u lot,还需要从cs\u lots\u历史记录中显示用户名
查询,我有:
SELECT cs_lots_history.*, cs_lots.id as csid, inv_id, inv_assets, inv_image, inv_color, inv_name, inv_rarity, inv_type, inv_price, price_ticket, places, now_places FROM cs_lots LEFT JOIN cs_lots_history ON cs_lots.id = cs_lots_history.id_lot WHERE active_lot='1' AND user_personaname='@Saundefined' GROUP BY cs_lots.id;
但事实上,它只需要6个批次,因为表cs\u lots\u history
Nick@Saundefined
只需要6次购买(唯一id\u批次)。如果没有,结果根本不会打印出来
如果您没有指定user_personame-然后获取所有12个批次的条件,但是没有查询的意义,那么数组将不会按用户获取此购买的商品
我想做一些类似的事情,显示所有12项,重点放在cs\u lots
上,而如果在cs\u lots\u历史记录中找不到昵称,且id
=id\u lot
则结论在一列中为空。
可能吗
如果需要,请附带我的php代码…-:
$rows = array();
$res2 = mysql_query("SELECT cs_lots_history.*, cs_lots.id as csid, inv_id, inv_assets, inv_image, inv_color, inv_name, inv_rarity, inv_type, inv_price, price_ticket, places, now_places FROM cs_lots LEFT JOIN cs_lots_history ON cs_lots.id = cs_lots_history.id_lot WHERE active_lot='1' AND user_steamid='".$_SESSION['steamid']."' GROUP BY cs_lots.id") or die(mysql_error());
while($row = mysql_fetch_array($res2)) {
$rows []= array(
'id' => $row['csid'],
'inv_id' => $row['inv_id'],
'inv_assets' => $row['inv_assets'],
'name' => $row['inv_name'],
'inv_image' => $row['inv_image'],
'inv_rarity' => $row['inv_rarity'],
'inv_color' => $row['inv_color'],
'inv_type' => $row['inv_type'],
'inv_price' => $row['inv_price'],
'price_ticket' => $row['price_ticket'],
'maxUsers' => $row['places'],
'nowUsers' => $row['now_places'],
'my' => !empty($row['id_lot']) ? true : false
);
}
很难理解你在追求什么。我相信您希望查询返回cs_批次表中的所有记录,并指示客户是否使用历史记录表从该批次购买:
select cs_lots.id, count(h.id) from cs_lots left join cs_lots_history h
on cs_lots.id=h.id_lot and h.personaname='...'
where cs_lots.activelot=1 group by cs_slots.id
如果一个人没有买很多,那么计数将是0
如果您想要两个表中的全部记录,则不应使用group by:
select cs_lots.*, h.* from cs_lots left join cs_lots_history h on
cs_lots.id=h.id_lot and h.personaname='...' where cs_lots.activelot=1
这样,如果一个人没有出现在给定批次id的历史记录表中,历史记录表中的列将为空。您的查询不起作用,我需要这样的查询结果,但使用WHERE personame。。。如果我使用+WHERE user_personame-我有这个结果,很难向您解释,但即使用户不购买-id也要显示该批次。。。结果不是6。。。需要12个结果,相同的计数id
的cs_lost
,即使用户不买这个,也只是一个空列Personame1。您在历史记录表的id字段中加入,而不是在id_lot字段2中加入。我给你提供了两个例子,你尝试了第一个,尽管你预期的结果与第二个更相似。你不应该像那样在查询中添加personaname字段,即使mysql允许你使用它的默认配置。非常感谢你的通知,但我不明白。。。我不明白你是什么意思,我提出了一个问题,现在我将尝试。。。