GVKun编程网logo

php-如何联接两个表,然后显示从另一个表收集的一个表的每个数据的总和

16

在这篇文章中,我们将带领您了解php-如何联接两个表,然后显示从另一个表收集的一个表的每个数据的总和的全貌,同时,我们还将为您介绍有关database–两个表,每个表都有一个引用另一个的外键、MySQ

在这篇文章中,我们将带领您了解php-如何联接两个表,然后显示从另一个表收集的一个表的每个数据的总和的全貌,同时,我们还将为您介绍有关database – 两个表,每个表都有一个引用另一个的外键、MySQL PHP:从一个表中为另一个表的每个结果选择所有结果、mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中、mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中的知识,以帮助您更好地理解这个主题。

本文目录一览:

php-如何联接两个表,然后显示从另一个表收集的一个表的每个数据的总和

php-如何联接两个表,然后显示从另一个表收集的一个表的每个数据的总和

首先,对不起,如果我的问题标题听起来很蠢….我有下表.第一个表包含我的支出类型的名称,第二个表包含这些支出的金额和日期的信息.如果您注意到下面的第二个表,则有一个名为“ e_id”的字段,它是我从第一个表中支出的相应id值.

第一表名称:expense_type

  id     expense_name 

  1        Insurance
  2        Interest Payment
  3        Rent
  4        Electricity

 ... and goes on like this (unlimited perhaps :))

第二表名称:expense_details

 id       e_id    amount       date

  1        3      1000        2011-12-11 
  2        1       500        2011-12-19 
  3        4        10        2011-11-21
  4        3      1000        2012-01-12

... and goes on like this )

现在我的计划是从这两个表中获取所有值,并生成如下结果.但是由于第一个表的信息数量未知(对我而言),我不知道如何编写查询(包括PHP和MysqL)来生成这样的结果.

请您帮我实现此目标?

提前致谢 :)

附注:仅供参考,我正在使用Codeigniter.

                                 **For the Month: January 2011**


           Insurance    :  1000

           Rent         :  3453

           Electricity  :   546

      Interest Payment  :   546    
  ---------------------------------
      **Total Expenses**: 938949 /// this value is just for an example

解决方法:

您可以在控制器或模型中执行此操作:

$sql = "SELECT a.*, b.expense_name FROM expense_details AS a, expense_name AS b WHERE a.e_id = b.id ORDER BY a.id ASC";
$data = $this->db->query($sql)->result_array();
$totals = array();

echo '**For the Month: January 2011**';
echo "\n\n";

foreach ($data as $item){
  $totals[$item['expense_name']] = isset($totals[$item['expense_name']]) ? $totals[$item['expense_name']] + $item['amount'] : $item['amount']: 
}

foreach ($totals as $name => $val){
  echo $name.': '.$val;
  echo "\n\n";
}

这不是最优雅或最稳定的方法,但我希望这可以帮助您了解需要做的事情.您可能还想按我想的月份分解总数.

database – 两个表,每个表都有一个引用另一个的外键

database – 两个表,每个表都有一个引用另一个的外键

我正在尝试创建一个数据库来存储测验的一些问题和答案

到目前为止我有两张桌子:

问题:(问题ID(PK),问题字符串,正确答案ID)

答案:(答案ID(PK),答案字符串,问题ID)

我在设置外键约束时遇到问题.当然,我需要确保答案中存在正确的答案ID,并且问题表中还存在答案中的ID问题.但是,当尝试在sqliteStudio中添加这些外键时,我收到的错误表明我无法添加外键引用表A> B,当已经存在来自B的外键约束时>一个.

解决方法

这种行为是正确的.否则,你会遇到鸡与蛋的问题:如果没有先插入一行代码就无法插入答案,而且如果没有先插入有效答案,也无法插入问题它.尝试删除被引用的问题或答案时,您会遇到类似的问题.

一个典型的解决方案是在答案表中添加一列is_correct.

MySQL PHP:从一个表中为另一个表的每个结果选择所有结果

MySQL PHP:从一个表中为另一个表的每个结果选择所有结果

我的数据库中有以下两个表:

TABLE 1: Specials
---------------------------------------------
| Special ID | Special Name | Special Image |
 --------------------------------------------
|     1      |   Special 1  |     1.jpg     |   
|     2      |   Special 2  |     2.jpg     |
|     3      |   Special 3  |     3.jpg     |
---------------------------------------------

TABLE 2: Special Items
---------------------------
| Item ID | Item Name     |
---------------------------
|     1      |   Service  | 
|     2      |    Clean   |
|     3      |     Dry    |
---------------------------

从数据库中提取时,我正在寻找实现这一目标的方法(第4列将是下拉列表):

EDIT SPECIALS (Columns 1-3: Table 1) (Column 4: All results from Table 2)
-------------------------------------------------------------------
| Special ID | Special Name | Special Image | Items               |
-------------------------------------------------------------------
|     1      |   Special 1  |     1.jpg     | Service, Clean, Dry |      
|     2      |   Special 2  |     2.jpg     | Service, Clean, Dry | 
|     3      |   Special 3  |     3.jpg     | Service, Clean, Dry |
-------------------------------------------------------------------    

解决方法:

使用能够连接行的MysqL GROUP_CONCAT()方法.

SELECT  a.*,
        (SELECT GROUP_CONCAT(ItemName) FROM SpecialItems) ItemList
FROM    Specials a

> SQLFiddle Demo
> GROUP_CONCAT()

OUTPUT

╔════════════╦══════════════╦═══════════════╦═══════════════════╗
║ SPECIAL ID ║ SPECIAL NAME ║ SPECIAL IMAGE ║     ITEMLIST      ║
╠════════════╬══════════════╬═══════════════╬═══════════════════╣
║          1 ║ Special 1    ║ 1.jpg         ║ Service,Clean,Dry ║
║          2 ║ Special 2    ║ 2.jpg         ║ Service,Clean,Dry ║
║          3 ║ Special 3    ║ 3.jpg         ║ Service,Clean,Dry ║
╚════════════╩══════════════╩═══════════════╩═══════════════════╝

mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中
mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中


------解决方案--------------------
将表A中的查出来经过php处理将指定的字段用自定义的东西填充或者取出多出的字段然后放入到B表中
------解决方案--------------------
怎么个不同法?
给出两表结构,并说明需要将哪个表的哪些字段导入到另一个表的哪些字段中去

------解决方案--------------------
我去,这数据表,这么多个字段,你是把所有字段都放一个表了么?
------解决方案--------------------
你没有给出把哪个字段放到哪个字段中去
------解决方案--------------------
引用:
例如 jobinfo表中的companyaddr 放入job_hr表中的 m_address

你已经完成大半了
例如
insert into job_hr (m_address) values select companyaddr from jobinfo

------解决方案--------------------
本帖最后由 xuzuning 于 2011-08-26 06:50:08 编辑 insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo


------解决方案--------------------
根据主健,联表更新
------解决方案--------------------
引用:
insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo

 11# 真高手~ 那如果数据类型不一样 比如两个都是char呢 也能吗? 

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中


回复讨论(解决方案)

表结构不一样 那就只能用php读取数据然后 insert 了.要不咋地?计算机能智能到跟你心灵相通嘛

将表A中的查出来经过php处理将指定的字段用自定义的东西填充或者取出多出的字段然后放入到B表中

怎么个不同法?
给出两表结构,并说明需要将哪个表的哪些字段导入到另一个表的哪些字段中去



这个是要导入表的结构
CREATE TABLE IF NOT EXISTS `job_hr` (
  `m_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `m_login` varchar(50) NOT NULL,
  `m_pwd` varchar(32) NOT NULL,
  `m_sendemail` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_question` varchar(50) NOT NULL,
  `m_answer` varchar(50) NOT NULL,
  `m_typeid` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_groupid` tinyint(2) NOT NULL DEFAULT ''0'',
  `m_email` varchar(100) NOT NULL,
  `m_email2` varchar(100) DEFAULT NULL COMMENT ''备用邮箱(S+)'',
  `m_emailshowflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_name` varchar(200) NOT NULL,
  `m_sex` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_birth` date NOT NULL DEFAULT ''0000-00-00'',
  `m_cardtype` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_idcard` varchar(20) NOT NULL,
  `m_marriage` varchar(10) NOT NULL,
  `m_polity` varchar(10) NOT NULL,
  `m_hukou` varchar(100) NOT NULL,
  `m_seat` varchar(100) NOT NULL,
  `m_edu` tinyint(2) NOT NULL,
  `m_address` varchar(200) NOT NULL,
  `m_post` varchar(6) NOT NULL,
  `m_contact` varchar(50) NOT NULL,
  `m_chat` varchar(20) NOT NULL,
  `m_tel` varchar(100) NOT NULL,
  `m_telshowflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_fax` varchar(50) NOT NULL,
  `m_url` varchar(100) NOT NULL,
  `m_regdate` int(11) NOT NULL,
  `m_logindate` int(11) NOT NULL,
  `m_loginip` varchar(15) NOT NULL DEFAULT ''000.000.000.000'',
  `m_loginnum` int(10) NOT NULL,
  `m_level` varchar(50) NOT NULL,
  `m_balance` int(10) NOT NULL DEFAULT ''0'',
  `m_integral` int(10) NOT NULL DEFAULT ''0'',
  `m_flag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_startdate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_enddate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_resumenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_mysendnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_myinterviewnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_myfavoritenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_letternums` tinyint(2) NOT NULL DEFAULT ''0'',
  `m_hirenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_interviewnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_expertnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_comm` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_commstart` date NOT NULL DEFAULT ''0000-00-00'',
  `m_commend` date NOT NULL DEFAULT ''0000-00-00'',
  `m_logo` varchar(50) NOT NULL,
  `m_logostatus` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_logoflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_logocomm` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_logostartdate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_logoenddate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_licence` varchar(100) NOT NULL,
  `m_trade` varchar(50) NOT NULL,
  `m_tradeid` smallint(5) NOT NULL,
  `m_ecoclass` varchar(20) NOT NULL,
  `m_fund` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_workers` varchar(10) NOT NULL,
  `m_founddate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_introduce` mediumtext NOT NULL,
  `m_teachers` mediumtext NOT NULL,
  `m_achievement` mediumtext NOT NULL,
  `m_hits` int(10) NOT NULL DEFAULT ''0'',
  `m_template` varchar(20) NOT NULL,
  `m_activedate` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
  `m_mobile` varchar(20) NOT NULL,
  `m_mobileshowflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_smsnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_hirenum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_myinterviewnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_expertnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_recyclenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_recyclenum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_contactnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_contactnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_smsnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_mysendnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_myfavoritenum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_ishire` smallint(4) NOT NULL DEFAULT ''0'',
  `m_operator` varchar(20) NOT NULL,
  `m_map` varchar(50) NOT NULL,
  `m_confirm` tinyint(1) NOT NULL DEFAULT ''0'',
  
  PRIMARY KEY (`m_id`),
  KEY `m_regdate` (`m_regdate`),
  KEY `m_enddate` (`m_enddate`),
  KEY `m_logindate` (`m_logindate`),
  KEY `m_login` (`m_login`),
  KEY `m_activedate` (`m_activedate`),
  KEY `m_startdate` (`m_startdate`),
  KEY `m_ishire` (`m_ishire`),
  KEY `m_logoflag` (`m_logoflag`),
  KEY `m_logostatus` (`m_logostatus`)
) ENGINE=MyISAM  DEFAULT 

CHARSET=gbk AUTO_INCREMENT=122851 ;


这个是有数据的表
 create  table jobinfo(
  id int(11)              
  jname varchar(50)                
  jdesc text                 
  jexp varchar(20)            
  knw varchar(20)               
  mgexp varchar(30)               
  jattr varchar(10)               
  num varchar(10)               
  paymt varchar(10)             
  conn text            
  waddr varchar(100)             
  pdate varchar(20)            
  jtype varchar(20)            
  cid varchar(10)             
  url varchar(50)              
  compname varchar(50)               
  companyaddr varchar(1000)              
  mailbox varchar(1000)             
  cmsg varchar(1000)            
  linkman varchar(20)               
)

我去,这数据表,这么多个字段,你是把所有字段都放一个表了么?

只把下面的表的数据插入第一张表里

你没有给出把哪个字段放到哪个字段中去

例如 jobinfo表中的companyaddr 放入job_hr表中的 m_address 

例如 jobinfo表中的companyaddr 放入job_hr表中的 m_address
你已经完成大半了
例如
insert into job_hr (m_address) values select companyaddr from jobinfo

它们在两个不的数据库啊  有没有代码啊 这样一个个的添加很麻烦的  谢谢啦

本帖最后由 xuzuning 于 2011-08-26 06:50:08 编辑

insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo

根据主健,联表更新

insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo
 11# 真高手~ 那如果数据类型不一样 比如两个都是char呢 也能吗? 

我已经搞完了 谢谢各位高手帮忙

楼主,你是怎么搞定的?

怎么搞定的?现在急需,如果表中的数据很多,比如几百万条,怎么移

老老实实写程序导吧

关于php-如何联接两个表,然后显示从另一个表收集的一个表的每个数据的总和的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于database – 两个表,每个表都有一个引用另一个的外键、MySQL PHP:从一个表中为另一个表的每个结果选择所有结果、mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中、mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中等相关知识的信息别忘了在本站进行查找喔。

本文标签: