比如:有一个表 user(name,age,sex,birthday,company,edu)
然后把 user(age,sex,birthday,company,edu) 相同的 user(name)
列出来,并把什么相同的内容也附在 user(name) 中显示出来???先取出要查询比较的 人名 比如 '张三' 的内容$sql = "select * from user where name='张三' ";
$rst = mysql_query($sql) ;
$row = mysql_fetch_array($rst); 然后
$user=$name=$age=$sex=$birthday=$company=$edu= Array();
while(){
$sql1 = "select * from user where ";
$rst1 = mysql_query($sql1) ;
$row1 = mysql_fetch_array($rst1);
while(){
$user=Array($name,$age,$sex,$birthday,$company,$edu);
}
if(empty($user)){}else {
foreach($user $k=>$v){}
}
}表一大,取值一多,马上就乱套了.
然后把 user(age,sex,birthday,company,edu) 相同的 user(name)
列出来,并把什么相同的内容也附在 user(name) 中显示出来???先取出要查询比较的 人名 比如 '张三' 的内容$sql = "select * from user where name='张三' ";
$rst = mysql_query($sql) ;
$row = mysql_fetch_array($rst); 然后
$user=$name=$age=$sex=$birthday=$company=$edu= Array();
while(){
$sql1 = "select * from user where ";
$rst1 = mysql_query($sql1) ;
$row1 = mysql_fetch_array($rst1);
while(){
$user=Array($name,$age,$sex,$birthday,$company,$edu);
}
if(empty($user)){}else {
foreach($user $k=>$v){}
}
}表一大,取值一多,马上就乱套了.
user(李四,23,男,1978-02-01,aol,北大)
user(王五,22,男,1979-05-06,ibm,北大)
user(李六,22,男,1979-06-09,sgi,北大)
user(赵七,22,男,1979-07-02,ibm,清华)以 张三 为例 张三 是 北大 的 ,那么 把 表中 其他 北大 的 全部列出来 array(李四,王五,李六);
然后 是 ibm 的 ,那么 把 表中 其他 ibm 的 全部列出来 array(王五,赵七);不知道 这样 是否 清楚 了 ???
* @var username 要查詢的用戶名
* @var cols 要查詢的欄目,類型為陣列
* @return 查詢出的資料陣列
*/
function getData($username, $cols = array()){
if(!$cols) return array();
$sql = "Select * from user where name = '$username'";
$query = mysql_query($sql);
if(!$userinfo = mysql_fetch_array($query)) return array();
$result = array();
foreach($cols as $col){
$sql = "Select * from user where $col = '{$userinfo[$col]}'";
$query = mysql_query($sql);
while($value = mysql_fetch_array($query)){
$result[$col][] = $value;
}
}
return $result;
}按例子寫的函式,是不是實現這樣的功能?
把这个表自结合起来查询呗
select * from tableX a,tableX b
where a.name='zhangsan' and (
a.company=b.company or a.edu=b.edu
)
不好意思,是我把问题搞混了,我想要的结果是:user(张三,22,男,1979-02-11,ibm,北大)
user(李四,23,男,1978-02-01,aol,北大)
user(王五,22,男,1979-05-06,ibm,北大)
user(李六,22,男,1979-06-09,sgi,北大)
user(赵七,22,男,1979-07-02,ibm,清华)张三 的同类者的交集内容:李四学校:北大
王五学校:北大
公司:ibm李六学校:北大
公司:ibm
赵七学校:北大$q="CREATE TABLE `user` (
`id` int(60) NOT NULL auto_increment,
`name` varchar(100) NOT NULL default '',
`age` varchar(100) NOT NULL default '',
`sex` varchar(200) NOT NULL default '',
`birthday` varchar(100) NOT NULL default '',
`company` varchar(100) NOT NULL default '',
`edu` varchar(200) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ";
mysql_query($q) ;
$q="insert into user values ('','张三',22,'男',1979-02-11,'ibm','北大')";
mysql_query($q) ;
$q="insert into user values ('','李四',23,'男',1978-02-01,'aol','北大')";
mysql_query($q) ;
$q="insert into user values ('','王五',22,'男',1979-05-06,'ibm','北大')";
mysql_query($q) ;
$q="insert into user values ('','李六',22,'男',1979-06-09,'sgi','北大')";
mysql_query($q) ;
$q="insert into user values ('','赵七',22,'男',1979-07-02,'ibm','清华')";
mysql_query($q) ;
$username='张三';
$cols = array('company','edu');
$result=getData($username, $cols);echo "<br /><pre>";
print_r($result);
echo "</pre>"; Array
(
[company] => Array
(
[0] => Array
(
[0] => 1
[id] => 1
[1] => 张三
[name] => 张三
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1966
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
) [1] => Array
(
[0] => 3
[id] => 3
[1] => 王五
[name] => 王五
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1968
[birthday] => 1968
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
) [2] => Array
(
[0] => 5
[id] => 5
[1] => 赵七
[name] => 赵七
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1970
[birthday] => 1970
[5] => ibm
[company] => ibm
[6] => 清华
[edu] => 清华
) ) [edu] => Array
(
[0] => Array
(
[0] => 1
[id] => 1
[1] => 张三
[name] => 张三
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1966
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
) [1] => Array
(
[0] => 2
[id] => 2
[1] => 李四
[name] => 李四
[2] => 23
[age] => 23
[3] => 男
[sex] => 男
[4] => 1975
[birthday] => 1975
[5] => aol
[company] => aol
[6] => 北大
[edu] => 北大
) [2] => Array
(
[0] => 3
[id] => 3
[1] => 王五
[name] => 王五
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1968
[birthday] => 1968
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
) [3] => Array
(
[0] => 4
[id] => 4
[1] => 李六
[name] => 李六
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1964
[birthday] => 1964
[5] => sgi
[company] => sgi
[6] => 北大
[edu] => 北大
) ))
$company=count($result[company]);
$edu=count($result[edu]);
echo "<br /><br /> 公司<br /> ";
for($i=0;$i<$company;$i++){
echo "<br /> ";
echo $result[company][$i][name].$result[company][$i][company];
}
echo "<br /><br /> 学校<br /> ";
for($i=0;$i<$edu;$i++){
echo "<br /> ";
echo $result[edu][$i][name].$result[edu][$i][edu];
}公司张三ibm
王五ibm
赵七ibm学校张三北大
李四北大
王五北大
李六北大
怎样反过来呢? 以人名为主呢?非常感谢!
不好意思,是我把问题搞混了,我想要的结果是:user(张三,22,男,1979-02-11,ibm,北大)
user(李四,23,男,1978-02-01,aol,北大)
user(王五,22,男,1979-05-06,ibm,北大)
user(李六,22,男,1979-06-09,sgi,北大)
user(赵七,22,男,1979-07-02,ibm,清华)张三 的同类者的交集内容:李四学校:北大
王五学校:北大
公司:ibm李六学校:北大
公司:ibm
赵七学校:北大
mysql_connect("localhost", "root", "adminroot");
mysql_select_db("test");
mysql_query('SET NAMES \'utf8\'');
$sql = "select * from user a,user b
where a.name='张三'
and (
a.company=b.company or a.edu=b.edu
) " ;$rst = mysql_query($sql) ;
while($row = mysql_fetch_array($rst)){
echo "<br /><pre>";
print_r($row);
echo "</pre>";
}
Array
(
[0] => 1
[id] => 1
[1] => 张三
[name] => 张三
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1966
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
[7] => 1
[8] => 张三
[9] => 22
[10] => 男
[11] => 1966
[12] => ibm
[13] => 北大
)Array
(
[0] => 1
[id] => 2
[1] => 张三
[name] => 李四
[2] => 22
[age] => 23
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1975
[5] => ibm
[company] => aol
[6] => 北大
[edu] => 北大
[7] => 2
[8] => 李四
[9] => 23
[10] => 男
[11] => 1975
[12] => aol
[13] => 北大
)Array
(
[0] => 1
[id] => 3
[1] => 张三
[name] => 王五
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1968
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
[7] => 3
[8] => 王五
[9] => 22
[10] => 男
[11] => 1968
[12] => ibm
[13] => 北大
)Array
(
[0] => 1
[id] => 4
[1] => 张三
[name] => 李六
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1964
[5] => ibm
[company] => sgi
[6] => 北大
[edu] => 北大
[7] => 4
[8] => 李六
[9] => 22
[10] => 男
[11] => 1964
[12] => sgi
[13] => 北大
)Array
(
[0] => 1
[id] => 5
[1] => 张三
[name] => 赵七
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1970
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 清华
[7] => 5
[8] => 赵七
[9] => 22
[10] => 男
[11] => 1970
[12] => ibm
[13] => 清华
)
$rst = mysql_query($sql) ;
while($row = mysql_fetch_array($rst)){
echo "<br /> ";
echo $row[name].$row[company].$row[edu] ;
}
张三ibm北大
李四aol北大
王五ibm北大
李六sgi北大
赵七ibm清华
非常感谢
是没错!怎样从这些数组里取出符合要求的值呢?
晕乎乎的.发现上面自己的东西写错了.进一步说如何从这些数组中取出:李四 北大 //与张三 edu 相同
王五 北大 ibm //与张三 edu company 相同
李六 北大 //与张三 edu 相同
赵七 ibm //与张三 company 相同谢谢了Array
(
[0] => 1
[id] => 2
[1] => 张三
[name] => 李四
[2] => 22
[age] => 23
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1975
[5] => ibm
[company] => aol
[6] => 北大
[edu] => 北大
[7] => 2
[8] => 李四
[9] => 23
[10] => 男
[11] => 1975
[12] => aol
[13] => 北大
)Array
(
[0] => 1
[id] => 3
[1] => 张三
[name] => 王五
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1968
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 北大
[7] => 3
[8] => 王五
[9] => 22
[10] => 男
[11] => 1968
[12] => ibm
[13] => 北大
)Array
(
[0] => 1
[id] => 4
[1] => 张三
[name] => 李六
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1964
[5] => ibm
[company] => sgi
[6] => 北大
[edu] => 北大
[7] => 4
[8] => 李六
[9] => 22
[10] => 男
[11] => 1964
[12] => sgi
[13] => 北大
)Array
(
[0] => 1
[id] => 5
[1] => 张三
[name] => 赵七
[2] => 22
[age] => 22
[3] => 男
[sex] => 男
[4] => 1966
[birthday] => 1970
[5] => ibm
[company] => ibm
[6] => 北大
[edu] => 清华
[7] => 5
[8] => 赵七
[9] => 22
[10] => 男
[11] => 1970
[12] => ibm
[13] => 清华
)
if(a.company=b.company,'same company',''),
if(a.edu=b.edu,'same edu', '')
from tableX a,tableX b
where a.name='zhangsan' and (
a.company=b.company or a.edu=b.edu
)依次类推