我有2张桌子。我们将其命名为tablea
和tableb
。
它们都有参数code
。
从tablea
我检索数据:
$states = mysql_query("SELECT * FROM tablea WHERE code='$code'");
结果是数字。类似的东西:001, 004, 005, 006
PHP任务是检测这些数字(单独)并从tableb
检索与这些数字相对应的数据。
我只需要一些指导我应该使用哪种方法。
感谢您的关注
答案 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 |
+------+