1

我有两张桌子

table: t1
id|name|type
1 | a  |0
2 | b  |1
3 | c  |0
4 | d  |0
...

table: t2
uid|type
4  |1
3  |0
...

我想计算或获取表 t1 中的记录有 type = 1 并且记录有 id = uid 表 t2 有 type = 1
在一个查询中计算或获取记录的最佳方法是什么

$type = 1;
$count = mysql_num_rows(mysql_query("Select * .... Where type = $type ")); //$count = 2
$result = mysql_query("Select * ... order by id desc "); // $result include record in table t1 has id (4, 2) b/c order by id desc

编辑:我做了一个 sql 在http://www.sqlfiddle.com/#!2/8847d1/12 中尝试 但我不能这样做
我希望记录结果看起来像(所有列都有我上面的条件)

id|name|
4 |d   | 
2 |b   |

怎么做 谢谢

4

4 回答 4

1
select t1.id,t1.name from t1 left join t2 on t1.id = t2.uid where t1.type = 1 or t2.type = 1
于 2013-07-31T03:53:47.883 回答
1

由于表之间没有链接,您可以使用 UNION 查询:

SELECT id,type FROM t1 WHERE type=1
UNION
SELECT uid AS id,type FROM t2 WHERE type=1

http://dev.mysql.com/doc/refman/5.0/en/union.html有关联合加入的更多信息。

于 2013-07-31T05:08:50.530 回答
0

尝试这个

select * from t1 join t2 on t1.id = t2.uid where t1.type = 1 and t2.type = 1

阅读如何使用加入(左加入,右加入,加入)

1. 阅读这里

2. 第二份文件

于 2013-07-31T03:57:18.880 回答
0
$type = 1;
if ( isset($type) and $type > 0 )
{
    $sql =  "SELECT id, name FROM t1
            LEFT JOIN t2 ON t1.id = t2.uid
            WHERE t1.type = $type AND t2.type = $type 
            ORDER BY t1.id DESC";
    $count  = mysql_num_rows( $sql ) or die('Error');
    $result = mysql_query( $sql ) or die('Error');
}
于 2013-07-31T05:10:42.190 回答