2013-02-08 103 views
0

以下是情况。从两个MySQL表创建一个已过滤的数组

我在DB中有两个表:tblcustomfieldsvalues(用于自定义字段条目)和tblclients(包含客户端列表)。

tblcustomfieldsvalues具有如下的数据结构:

id =>10 relid =>13 data =>somedataentry

id =>10 relid =>21 data =>someotherdataentry

tblclients具有如下的数据结构:

id =>13 firstname =>somename lastname =>somelastname

我有这样的代码来创建的relids阵列具有id = 10:

$sql = mysqli_fetch_array(mysqli_query("SELECT * FROM `tblcustomfieldsvalues` WHERE `id` = '10'")); 

$cids = array(); 

while ($row = $sql) 
{ 
    array_push($cids, $row['relid']); 
} 

现在我拥有填写自定义字段的用户ID在$cids阵列中有一些数据,我如何从tblclients获得这些用户的详细信息?

在此先感谢。

+0

你的tblclients表结构是什么? – sgeddes

+0

因为你还没有给你tblclients结构,但是你已经在cid和id上执行了连接 –

+0

为'tblclients'添加了数据结构 –

回答

1

听起来像是你只需要使用一个INNER JOIN

SELECT t2.* 
FROM tblcustomfieldsvalues t 
    INNER JOIN tblclients t2 ON t.relid = t2.id 
WHERE t.ID = 10 

祝你好运!

+0

一旦我添加了这段代码,就会得到'503服务不可用'。 :( –

+0

@OhhMee - 这个代码只会得到你要求的客户端详细信息,你需要更新你的php代码 - 这个查询返回所有的用户ID和其他用户信息(不仅仅是用户ID - - 任何在您的tblclients中匹配自定义字段中的ID 10)有意义吗? – sgeddes

+0

是的,我会研究更多的代码,谢谢:) –

0

不知道我不能肯定的tblclients表结构,但它听起来像的,而不是做单独的查询和循环你可以只使用一个连接:

SELECT 
    * 
FROM 
    tblcustomfieldsvalues 
    NATURAL JOIN tblclients 
WHERE 
    id = 10 
1
$sql = mysqli_fetch_array(mysqli_query("SELECT * FROM `tblcustomfieldsvalues` WHERE `id` = '10'")); 

$cids = array(); 

while ($row = $sql) 
{ 
    //array_push($cids, $row['relid']); 
    $sql1 = mysqli_fetch_array(mysqli_query("SELECT * FROM `tblclients ` WHERE `id` = '$row['relid']'")); 
    while ($row1 = $sql1) 
    { 
      //echo your output 
    } 
} 

OR

SELECT * FROM 
tblcustomfieldsvalues cv,tblclients c WHERE 
cv.id = 10 and cv.id = c.id 
相关问题