一个时间段内各地区数据和,发现重复地区不相加
有2个表
第一个表是f_city(字段:city_id和字段city_name)
第二个表是f_chengjiao(字段:id、city_id、area、taoshu、fang_time)
关联字段是city_id
我写的语句是
SELECT CONCAT(fc.city_name), SUM(fcj.area), SUM(fcj.taoshu) FROM f_chengjiao AS fcj LEFT JOIN f_city AS fc USING (city_id) WHERE ".$sql." GROUP BY fcj.fang_time ORDER BY fc.city_id
出来的结果是下图,重复的地区没有合并相加
回复讨论(解决方案)
分组是 GROUP BY fcj.fang_time
很自然会是 重复的地区没有合并相加
因为相同 fc.city_name 可能具有不同的 fcj.fang_time 值(显然是个时间)
分组是 GROUP BY fcj.fang_time
很自然会是 重复的地区没有合并相加
因为相同 fc.city_name 可能具有不同的 fcj.fang_time 值(显然是个时间)
谢谢提示,但是现在还有一个问题是在这个统计时间内,有的地区数据因为没有数据就没有添加数据要怎么在sql中让没有添加数据地区显示0呢?
f_chengjiao AS fcj LEFT JOIN f_city AS fc
改为
f_chengjiao AS fcj RIGHT JOIN f_city AS fc
或
f_city AS fc LEFT JOIN f_chengjiao AS fcj
谢谢提示,但是现在还有一个问题是在这个统计时间内,有的地区数据因为没有数据就没有添加数据要怎么在sql中让没有添加数据地区显示0呢?
那你得告诉数据库,你所有地区的名单! 就是要将你现在得到的结果集,根据地区这个字段,关联(left/right join)你所有的地区名单
f_chengjiao AS fcj LEFT JOIN f_city AS fc
改为
f_chengjiao AS fcj RIGHT JOIN f_city AS fc
或
f_city AS fc LEFT JOIN f_chengjiao AS fcj
还是不能显示出没有添加数据的地区为0的效果,和没修过前一样
谢谢提示,但是现在还有一个问题是在这个统计时间内,有的地区数据因为没有数据就没有添加数据要怎么在sql中让没有添加数据地区显示0呢?
那你得告诉数据库,你所有地区的名单! 就是要将你现在得到的结果集,根据地区这个字段,关联(left/right join)你所有的地区名单
所有的地区都存在第一个表是f_city(字段:city_id和字段city_name)中
你要按 city_name 分组
你要按 city_name 分组
是按city_nameSELECT CONCAT(fc.city_name), SUM(fcj.area), SUM(fcj.taoshu) FROM f_chengjiao AS fcj RIGHT JOIN f_city AS fc USING (city_id) WHERE ".$sql." GROUP BY fc.city_name ORDER BY fc.city_id
SELECT * FROM 地区表
left JOIN 统计表 ON 地区表.city_name = 统计表.city_name
GROUP BY 地区表.city_name
话说这个USING (city_id) 东西我不太懂和on有什么区别,所以没在你的sql上改!
SELECT * FROM 地区表
left JOIN 统计表 ON 地区表.city_name = 统计表.city_name
GROUP BY 地区表.city_name
话说这个USING (city_id) 东西我不太懂和on有什么区别,所以没在你的sql上改!
USING (city_id) 是表关联字段的简写
SELECT * FROM 地区表
left JOIN 统计表 ON 地区表.city_name = 统计表.city_name
GROUP BY 地区表.city_name
话说这个USING (city_id) 东西我不太懂和on有什么区别,所以没在你的sql上改!
city_name不是关联字段,这样搜索不到
city_name不是关联字段,这样搜索不到
你的数据表 的数据 是怎么知道 他属于 哪个城市的, 是用id 还是用 name? 就用那个字段做关联条件!
city_name不是关联字段,这样搜索不到
你的数据表 的数据 是怎么知道 他属于 哪个城市的, 是用id 还是用 name? 就用那个字段做关联条件!
用了,还是不能显示出 没有添加数据城市为0的效果,只会显示添加了数据的结果
我理解出来是这样的!你要的是这个效果吗?
我理解出来是这样的!你要的是这个效果吗?
抱歉回信息晚了,登录帐号的开了大写一直登录不上,帐号被锁定了。
你这里面还用的条件语句吗?不懂这个条件句的意思,能解释下吗
我试着用你写的方法修改了,由于里面要地区求和,用条件语句包裹后就报错了,还有一个问题是,表关联后你搜索城市名怎么不要带上表前缀
1.你这里面还用的条件语句吗?
1)如果你的“条件语句”指的是where,在left join后面加就可以了
2)如果你的"条件语句"指的是on后面的关系条件,看我12楼的回复,目的是要让数据表知道每条数据来自城市表的哪个城市。
2.地区求和
SELECT city_name,IF(toushu is NULL,0,sum(toushu))
FROM t_city
LEFT JOIN t_chengjiao on t_city.cid= t_chengjiao.cid
GROUP BY t_chengjiao.cid
3.表关联后你搜索城市名怎么不要带上表前缀?
表与表关联之后,没有出现重复名字的字段,可以不加前缀。
1.你这里面还用的条件语句吗?
1)如果你的“条件语句”指的是where,在left join后面加就可以了
2)如果你的"条件语句"指的是on后面的关系条件,看我12楼的回复,目的是要让数据表知道每条数据来自城市表的哪个城市。
2.地区求和
SELECT city_name,IF(toushu is NULL,0,sum(toushu))
FROM t_city
LEFT JOIN t_chengjiao on t_city.cid= t_chengjiao.cid
GROUP BY t_chengjiao.cid
3.表关联后你搜索城市名怎么不要带上表前缀?
表与表关联之后,没有出现重复名字的字段,可以不加前缀。
我说的条件句是IF(toushu is NULL,0,sum(toushu)),不懂。
我又修改了下,还是不能出来
SELECT CONCAT(fc.city_name), IF(fcj.area is NULL,0,SUM(fcj.area)), IF(fcj.taoshu is NULL,0,SUM(fcj.taoshu)) FROM f_city AS fc LEFT JOIN f_chengjiao AS fcj USING (city_id) WHERE ".$sql." GROUP BY fc.city_id ORDER BY fc.city_id
结果如下图(我预留了一个city_id=13的没有添加数据,但是没有显示出来)
你把数据导出来,我测试一下
你总不能让我按你的截图来构造数据表吧
你把数据导出来,我测试一下
你总不能让我按你的截图来构造数据表吧
-- phpMyAdmin SQL Dump-- version 3.5.1-- http://www.phpmyadmin.net---- 主机: localhost-- 生成日期: 2014 年 09 月 13 日 02:48-- 服务器版本: 5.5.24-log-- PHP 版本: 5.3.13SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;---- 数据库: `fang01`---- ------------------------------------------------------------ 表的结构 `f_chengjiao`--CREATE TABLE IF NOT EXISTS `f_chengjiao` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `city_id` mediumint(8) NOT NULL, `iszhu` char(1) NOT NULL DEFAULT '1' COMMENT '//住宅or非住宅,1是住宅', `area` int(10) NOT NULL COMMENT '//面积', `taoshu` int(10) NOT NULL COMMENT '//套数', `fang_time` date NOT NULL COMMENT '//房地产信息网入库时间', `os_time` datetime NOT NULL COMMENT '//入库电脑时间', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=14 ;---- 转存表中的数据 `f_chengjiao`--INSERT INTO `f_chengjiao` (`id`, `city_id`, `iszhu`, `area`, `taoshu`, `fang_time`, `os_time`) VALUES(1, 1, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(2, 2, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(3, 3, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(4, 4, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(5, 5, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(6, 6, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(7, 7, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(8, 8, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(9, 9, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(10, 10, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(11, 11, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(12, 12, '1', 100, 200, '2014-09-01', '2014-09-01 00:00:00'),(13, 1, '1', 100, 200, '2014-09-08', '2014-09-01 00:00:00');-- ------------------------------------------------------------ 表的结构 `f_city`--CREATE TABLE IF NOT EXISTS `f_city` ( `city_id` mediumint(8) NOT NULL, `city_name` varchar(10) NOT NULL, PRIMARY KEY (`city_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;---- 转存表中的数据 `f_city`--INSERT INTO `f_city` (`city_id`, `city_name`) VALUES(1, '南昌市'),(2, '东湖区'),(3, '西湖区'),(4, '青山湖区'),(5, '青云谱区'),(6, '湾里区'),(7, '经开区'),(8, '高新区'),(9, '红谷滩区'),(10, '桑海区'),(11, '英雄区'),(12, '南昌县'),(13, '新建县');/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
检查你的where 语句
检查你的where 语句
where是一个时间段的选择
$sql = '';if($start_time && $end_time){ $sql = " fcj.fang_time >='".$start_time."' AND fcj.fang_time<='".$end_time."' ";}else if($start_time){ $sql = " fcj.fang_time ='".$start_time."' ";}else if($end_time){ $sql = " fcj.fang_time ='".$end_time."' ";}else{ $sql = " fcj.city_id='".$city."' ";}
SELECT city_name, sum(area) as `面积`,sum(taoshu) as `套数` FROM f_city left join f_chengjiao on f_city.city_id=f_chengjiao.city_id group by f_city.city_id
右链接也是一样的
SELECT city_name, sum(area) as `面积`,sum(taoshu) as `套数` FROM f_city left join f_chengjiao on f_city.city_id=f_chengjiao.city_id group by f_city.city_id
奇怪了,我在8楼写的那个语句和你的差不多,怎么就是不能出来,你能告诉我是那里错了吗?
SELECT CONCAT(fc.city_name), SUM(fcj.area), SUM(fcj.taoshu) FROM f_chengjiao AS fcj RIGHT JOIN f_city AS fc USING (city_id) WHERE ".$sql." GROUP BY fc.city_id ORDER BY fc.city_id
你先把你的where语句去掉先
你先把你的where语句去掉先
还真是where造成的,但是我把where去掉,我就不能选择查询在一个时间段内的结果了
不是说你不能加where 是你的where有问题 在php echo你的sql语句,放到mysql去检查~ 看看是哪里有问题!
那有什么可奇怪的?
f_chengjiao 表中并无 新建县 的数据,如果按时间段过滤,必然会把他过滤掉
如果还想保有全部的 city_name 则需要这样写
SELECT city_name, sum(area) as `面积`,sum(taoshu) as `套数` FROM f_city left join (select * from f_chengjiao where 条件) t on f_city.city_id=t.city_id group by f_city.city_id
那有什么可奇怪的?
f_chengjiao 表中并无 新建县 的数据,如果按时间段过滤,必然会把他过滤掉
如果还想保有全部的 city_name 则需要这样写
SELECT city_name, sum(area) as `面积`,sum(taoshu) as `套数` FROM f_city left join (select * from f_chengjiao where 条件) t on f_city.city_id=t.city_id group by f_city.city_id
我数据库中搜索了,并没有过滤掉,你看看
你那是什么条件表达式?
不是说你不能加where 是你的where有问题 在php echo你的sql语句,放到mysql去检查~ 看看是哪里有问题!
打印了一个时间段:
fcj.fang_time >='2014-09-01' AND fcj.fang_time<='2014-09-13'
你那是什么条件表达式?
不是这样写的吗?只有这样写才能出来,不然你看下31楼,打印的条件是
fcj.fang_time >='2014-09-01' AND fcj.fang_time<='2014-09-13'
那有什么可奇怪的?
f_chengjiao 表中并无 新建县 的数据,如果按时间段过滤,必然会把他过滤掉
如果还想保有全部的 city_name 则需要这样写
SELECT city_name, sum(area) as `面积`,sum(taoshu) as `套数` FROM f_city left join (select * from f_chengjiao where 条件) t on f_city.city_id=t.city_id group by f_city.city_id
这里怎么有一个t,干嘛用的,用了你的写法全部都出来了,没有搞懂你这么写(select * from f_chengjiao where 条件)的意思,这里搜索了全部的字段了和直接用f_chengjiao 的差别 没有弄懂
你不能理解
select * from f_chengjiao where 条件
的含义???
1.这里怎么有一个t,干嘛用的
t 只是关联临时表的一个别名,没有特殊意义,你祛掉,他就会报错。
2.差别
1)写法一,先关联后搜索,这样的话不满足条件的记录(新建县)就不会被显示出来。(要理解这句话很简单,你select * 出来看看,有些记录是不满足你的where条件的)
2)写法二,先搜索(f_chengjiao)后关联,这样就不会影响到最后的结果数。
你不能理解
select * from f_chengjiao where 条件
的含义???
含义我知道,但是where 为什么要先放到f_chengjiao中,而不是放到外面
1.这里怎么有一个t,干嘛用的
t 只是关联临时表的一个别名,没有特殊意义,你祛掉,他就会报错。
2.差别
1)写法一,先关联后搜索,这样的话不满足条件的记录(新建县)就不会被显示出来。(要理解这句话很简单,你select * 出来看看,有些记录是不满足你的where条件的)
2)写法二,先搜索(f_chengjiao)后关联,这样就不会影响到最后的结果数。
哦懂了,但是别名是要用as吗?
所有的 as 都是可以省略的
所有的 as 都是可以省略的
原来是这样的,我看书里面都是要求写上as,同时我还想问一个问题,就是按你的要求写,f_chengjiao表都搜索了2次了,效率会不会低了点,以后这块数据多了,要怎么简写下?
1、这是按你的要求,而不是我的要求
2、f_chengjiao表只搜索了1次,怎么是2次呢?
1、这是按你的要求,而不是我的要求
2、f_chengjiao表只搜索了1次,怎么是2次呢?
第一次搜索的city_name、area、taoshu是表f_chengjiao中的
第二次搜索了SELECT * FROM f_chengjiao,这不是2次吗?

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

DDREASE est un outil permettant de récupérer des données à partir de périphériques de fichiers ou de blocs tels que des disques durs, des SSD, des disques RAM, des CD, des DVD et des périphériques de stockage USB. Il copie les données d'un périphérique bloc à un autre, laissant derrière lui les blocs corrompus et ne déplaçant que les bons blocs. ddreasue est un puissant outil de récupération entièrement automatisé car il ne nécessite aucune interruption pendant les opérations de récupération. De plus, grâce au fichier map ddasue, il peut être arrêté et repris à tout moment. Les autres fonctionnalités clés de DDREASE sont les suivantes : Il n'écrase pas les données récupérées mais comble les lacunes en cas de récupération itérative. Cependant, il peut être tronqué si l'outil est invité à le faire explicitement. Récupérer les données de plusieurs fichiers ou blocs en un seul

0. À quoi sert cet article ? Nous proposons DepthFM : un modèle d'estimation de profondeur monoculaire génératif de pointe, polyvalent et rapide. En plus des tâches traditionnelles d'estimation de la profondeur, DepthFM démontre également des capacités de pointe dans les tâches en aval telles que l'inpainting en profondeur. DepthFM est efficace et peut synthétiser des cartes de profondeur en quelques étapes d'inférence. Lisons ce travail ensemble ~ 1. Titre des informations sur l'article : DepthFM : FastMonocularDepthEstimationwithFlowMatching Auteur : MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Si vous avez besoin de savoir comment utiliser le filtrage avec plusieurs critères dans Excel, le didacticiel suivant vous guidera à travers les étapes pour vous assurer que vous pouvez filtrer et trier efficacement vos données. La fonction de filtrage d'Excel est très puissante et peut vous aider à extraire les informations dont vous avez besoin à partir de grandes quantités de données. Cette fonction peut filtrer les données en fonction des conditions que vous définissez et afficher uniquement les pièces qui remplissent les conditions, rendant la gestion des données plus efficace. En utilisant la fonction de filtre, vous pouvez trouver rapidement des données cibles, ce qui vous fait gagner du temps dans la recherche et l'organisation des données. Cette fonction peut non seulement être appliquée à de simples listes de données, mais peut également être filtrée en fonction de plusieurs conditions pour vous aider à localiser plus précisément les informations dont vous avez besoin. Dans l’ensemble, la fonction de filtrage d’Excel est très utile

Les performances de JAX, promu par Google, ont dépassé celles de Pytorch et TensorFlow lors de récents tests de référence, se classant au premier rang sur 7 indicateurs. Et le test n’a pas été fait sur le TPU présentant les meilleures performances JAX. Bien que parmi les développeurs, Pytorch soit toujours plus populaire que Tensorflow. Mais à l’avenir, des modèles plus volumineux seront peut-être formés et exécutés sur la base de la plate-forme JAX. Modèles Récemment, l'équipe Keras a comparé trois backends (TensorFlow, JAX, PyTorch) avec l'implémentation native de PyTorch et Keras2 avec TensorFlow. Premièrement, ils sélectionnent un ensemble de

Vous êtes confronté à un décalage et à une connexion de données mobile lente sur iPhone ? En règle générale, la puissance de l'Internet cellulaire sur votre téléphone dépend de plusieurs facteurs tels que la région, le type de réseau cellulaire, le type d'itinérance, etc. Vous pouvez prendre certaines mesures pour obtenir une connexion Internet cellulaire plus rapide et plus fiable. Correctif 1 – Forcer le redémarrage de l'iPhone Parfois, le redémarrage forcé de votre appareil réinitialise simplement beaucoup de choses, y compris la connexion cellulaire. Étape 1 – Appuyez simplement une fois sur la touche d’augmentation du volume et relâchez-la. Ensuite, appuyez sur la touche de réduction du volume et relâchez-la à nouveau. Étape 2 – La partie suivante du processus consiste à maintenir le bouton sur le côté droit. Laissez l'iPhone finir de redémarrer. Activez les données cellulaires et vérifiez la vitesse du réseau. Vérifiez à nouveau Correctif 2 – Changer le mode de données Bien que la 5G offre de meilleures vitesses de réseau, elle fonctionne mieux lorsque le signal est plus faible

Je pleure à mort. Le monde construit à la folie de grands modèles. Les données sur Internet ne suffisent pas du tout. Le modèle de formation ressemble à « The Hunger Games », et les chercheurs en IA du monde entier se demandent comment nourrir ces personnes avides de données. Ce problème est particulièrement important dans les tâches multimodales. À une époque où rien ne pouvait être fait, une équipe de start-up du département de l'Université Renmin de Chine a utilisé son propre nouveau modèle pour devenir la première en Chine à faire de « l'auto-alimentation des données générées par le modèle » une réalité. De plus, il s’agit d’une approche à deux volets, du côté compréhension et du côté génération, les deux côtés peuvent générer de nouvelles données multimodales de haute qualité et fournir un retour de données au modèle lui-même. Qu'est-ce qu'un modèle ? Awaker 1.0, un grand modèle multimodal qui vient d'apparaître sur le Forum Zhongguancun. Qui est l'équipe ? Moteur Sophon. Fondé par Gao Yizhao, doctorant à la Hillhouse School of Artificial Intelligence de l’Université Renmin.

Récemment, le milieu militaire a été submergé par la nouvelle : les avions de combat militaires américains peuvent désormais mener des combats aériens entièrement automatiques grâce à l'IA. Oui, tout récemment, l’avion de combat IA de l’armée américaine a été rendu public pour la première fois, dévoilant ainsi son mystère. Le nom complet de ce chasseur est Variable Stability Simulator Test Aircraft (VISTA). Il a été personnellement piloté par le secrétaire de l'US Air Force pour simuler une bataille aérienne en tête-à-tête. Le 2 mai, le secrétaire de l'US Air Force, Frank Kendall, a décollé à bord d'un X-62AVISTA à la base aérienne d'Edwards. Notez que pendant le vol d'une heure, toutes les actions de vol ont été effectuées de manière autonome par l'IA ! Kendall a déclaré : "Au cours des dernières décennies, nous avons réfléchi au potentiel illimité du combat air-air autonome, mais cela a toujours semblé hors de portée." Mais maintenant,

Cette semaine, FigureAI, une entreprise de robotique investie par OpenAI, Microsoft, Bezos et Nvidia, a annoncé avoir reçu près de 700 millions de dollars de financement et prévoit de développer un robot humanoïde capable de marcher de manière autonome au cours de la prochaine année. Et l’Optimus Prime de Tesla a reçu à plusieurs reprises de bonnes nouvelles. Personne ne doute que cette année sera celle de l’explosion des robots humanoïdes. SanctuaryAI, une entreprise canadienne de robotique, a récemment lancé un nouveau robot humanoïde, Phoenix. Les responsables affirment qu’il peut accomplir de nombreuses tâches de manière autonome, à la même vitesse que les humains. Pheonix, le premier robot au monde capable d'accomplir des tâches de manière autonome à la vitesse d'un humain, peut saisir, déplacer et placer avec élégance chaque objet sur ses côtés gauche et droit. Il peut identifier des objets de manière autonome
