我有这个: 我有联系人的表,每个联系人都链接到公司,公司在另一个表中。 然后我有INFORMS表,其中我有一些数据通知列表,每个人都链接到一个联系人。 我需要创建一个过滤通知列表的sql,但只显示特定公司的通知,因此它必须搜索具有相同COMPANY的所有联系人并向我显示该公司的INFORMS。 有什么想法吗?
更新:
表公司:
表格联系方式:
表INFORMS:
我需要制作一个搜索查询,仅显示与GOOGLE相关联的通知,因此所有通知都链接到将GOOGLE作为公司的联系人。 SO告知01和02 我正在尝试这样的事情但是不行:
$sql = "SELECT * FROM polar_companies WHERE id IN (SELECT * FROM polar_contacts WHERE Empresa = '$v_empresa');"
HERE I DONT KNOW HOT TO PERFORM A INFORM SEARCH
$result = $conn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
echo HERE I NEED THE INFORMS
}
} else {
echo "<p>No informs</p>";
}
答案 0 :(得分:0)
可以做这样的事情
__init__
此问题也可能有用,因为蒂姆提到了运行时问题,建议只使用1个查询{INNER LEFT JOIN} select left join table use and condition
答案 1 :(得分:0)
首先,您需要一个将表链接在一起的查询。
鉴于此表架构:
Companies Contacts Informs
--------- -------- -------
company_id --+ contact_id --+ inform_id
name | name | some_data
+-- company_id +-- contact_id
如此查询:
$sql = "SELECT informs.* " .
"FROM companies, contacts, informs " .
"WHERE companies.company_id=contacts.company_id AND " .
" contacts.contact_id=informs.contact_id AND " .
" companies.company_id=?";
绘制模式使得形成查询变得更加容易。看看每个表如何与另一个表连接?
由于SQL注入是一件坏事,use prepared statements。切勿在查询中使用'$ some_variable'进行查询。
// assuming you have already made connection
// assuming you assign $company_id
$result = $db->prepare($sql);
$result->execute(array($company_id));
$rows = $result->fetchAll();
建议,使用phpMyAdmin等工具来试验不同的查询。如果你擅长查询,你就不会循环遍历多个查询(随着你的表变得越来越大,效率非常低)。