【发布时间】:2013-06-21 12:34:51
【问题描述】:
我正在创建一个页面,它可以从论坛中获取注册会员的详细联系信息。我在尝试检索自定义字段时遇到了一些问题。对于大学和航班,使用下拉菜单,以便用户可以从特定列表中进行选择。但是论坛使用 3 个不同的表来存储数据。 这是表格的一小部分
db mock up http://www.emuas.co.uk/images/db_mock_up.png
目前我得到 uni 查询的 uni 和航班查询的航班,但结果与 user_id 无关。不知道如何改变它。
$user = "SELECT *
FROM profile_fields_data
JOIN users
ON profile_fields_data.user_id = users.user_id
ORDER BY users.username";
$uni = "SELECT *
FROM profile_fields_data
JOIN users
ON profile_fields_data.user_id = users.user_id
JOIN profile_fields_lang
ON profile_fields_data.pf_university = profile_fields_lang.option_id
WHERE field_id =4
ORDER BY users.username";
$flight = "SELECT *
FROM profile_fields_data
JOIN users
ON profile_fields_data.user_id = users.user_id
JOIN profile_fields_lang
ON profile_fields_data.pf_flight = profile_fields_lang.option_id
WHERE field_id =3
ORDER BY users.username";
$userdata = $db->sql_query($user);
$unidata = $db->sql_query($uni);
$flightdata = $db->sql_query($flight);
while($data = $db->sql_fetchrow($userdata))
{
$datauni = $db->sql_fetchrow($unidata);
$dataflight = $db->sql_fetchrow($flightdata);
echo "<tr>
<td> <a href='http://emuas.co.uk/forum/memberlist.php?mode=viewprofile&u=" . $data['user_id'] . "'>" . $data['username'] . "</a></td>
<td> <a href='mailto:" . $data['user_email'] . "'>" . $data['user_email'] . "</a> </td>
<td>" . $data['pf_contact_number'] . "</td>
<td>" . $data['user_birthday'] . "</td>
<td>" . $data['pf_service_number'] . "</td>
<td>" . $datauni['lang_value'] . "</td>
<td>" . $dataflight['lang_value'] . "</td>
<td>" . $data['pf_secondary_duty'] . "</td>
</tr>";
非常感谢
【问题讨论】:
-
嗨,拜伦,您需要一个 SQL 查询来为某个用户 ID 选择上述所有信息吗?查看一个体面的 SQL 手册(谷歌会提供帮助)并查看
JOIN,尝试一下,如果您需要支持,请发布您的代码 - 虽然只有 SQL - 并提出问题!祝你好运,玩得开心! -
既然您在两个查询中都有 users.user_id,您可以加入他们吗?
-
不同的 where 子句不会阻止我这样做吗?
-
您可以为各个查询设置别名,这样 'where' 语句就不会争论了。你可能会做一个 UNION 查询..这可能更容易......
-
认为我找到了问题所在。阅读所有表格后,pf_university 和 pf_flight 值似乎在所有字段中都超出了 +1,但论坛正在正确获取 lang_value。