php mysql从2个表中检索数据

时间:2015-02-19 12:18:16

标签: php mysql

我有2张桌子。我们将其命名为tableatableb

它们都有参数code

tablea我检索数据:

 $states = mysql_query("SELECT * FROM tablea WHERE code='$code'");

结果是数字。类似的东西:001, 004, 005, 006

PHP任务是检测这些数字(单独)并从tableb检索与这些数字相对应的数据。

我只需要一些指导我应该使用哪种方法。

感谢您的关注

3 个答案:

答案 0 :(得分:0)

我不确定我的问题是否正确,但不应该做以下工作?

$states = mysql_query("SELECT * FROM piezas WHERE p.code='$code'");
$codesToFind="";

if($states){
    while ($row = mysql_fetch_assoc($states)) {
        $codesToFind = $row["ColumnNameWithCodes"];
    }
}

$result = mysql_query("SELECT * FROM tableb WHERE ColumName IN ($codesToFind)");

if($result ){
    while ($row = mysql_fetch_assoc($result)) {
        echo $row["ColumnName"];
    }
}

答案 1 :(得分:0)

您可以使用以下查询从其他表中获取数据

SELECT * FROM `tableb` WHERE `column_name` IN(001, 004, 005, 005)

答案 2 :(得分:0)

如果您想要检索表a中包含代码b中具有相应值的代码的所有行,您可以使用JOIN这样的代码:

SELECT code FROM <tablea> 
INNER JOIN <tableb> ON <tableb>.code = <tablea>.code

我不确定您的表格是如何设置的,但是如果您在表a中存储这样的代码:001, 002, 003那么您应该可以使用FIND_IN_SET()来获取期望的结果:

SELECT <tableb>.* FROM <tableb>  
INNER JOIN <tablea> ON FIND_IN_SET(<tableb>.code, <tablea>.code);

由于您在表格中的值之间似乎有空格,因此您可以在查询中使用REPLACE()删除它们:

SELECT <tableb>.* FROM <tableb>  
INNER JOIN <tablea> ON FIND_IN_SET(<tableb>.code, REPLACE(<tablea>.code,' ',''));

如果表格中包含以下数据:

        A                 B
+--------------------+ +------+
| code               | | code |
+--------------------+ +------+
| 001, 002, 003, 004 | | 001  |
+--------------------+ | 005  |
                       | 006  |
                       | 002  |
                       +------+

结果将是:

SELECT B.* FROM B
INNER JOIN A ON FIND_IN_SET (B.code, REPLACE(A.code,' ','')); 

+------+
| code |
+------+
| 001  |
| 002  |
+------+