【发布时间】:2013-02-10 18:54:58
【问题描述】:
这会有点复杂。但我会尝试解释我想要做什么。
我在数据库中有如下表:
表格 - 条目
ID | User | Address | Workflow | Audit Date |
1 | Tim | 123 | 10 p/w | 22/2/2013 |
2 | Bob | 222 | 20 p/w | 22/2/2013 |
现在在相应的表格中我有图片:
表格 - 图片
ID | JobNo | User | ImagePath | ImageName |
52 | 1 | Tim | /1.jpg | /2.jpg |
53 | 1 | Tim | /3.jpg | /4.jpg |
现在 Pictures.Jobno 对应 Entries.ID
好吧,我所追求的是,当相关的 jobNo 有超过 2 个图像条目时,列出表条目中的所有条目。如果它有 1 个或更少,我想忽略该列表。
所以目前我可以通过php调用这样的条目:
function getAllEntries() {
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if (!($query = $mysqli->prepare("SELECT * FROM Entries
ORDER BY Date DESC"))) {
echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if (!$query->execute()) {
echo "Execute failed: (" . $query->errno . ") " . $query->error;
}
$query->bind_result($ID, $User, $Address, $Workflow, $Audit);
while ($query->fetch()) {
//Echo each entry here
}
$query->close();
$mysqli->close();
}
我的问题是,我该如何整合我想做的事情?我想说:
选择所有条目,其中表Pictures中有2个或更多图像对应Entries表中的作业编号/id比较。
我确信这是可行的。但是我想不出sql语句或者如何正确绑定到prepared statement中
SELECT * FROM Entries, Pictures, Where Pictures.Jobno = ID.Entries AND(图片中的行数)>= 2。
还是什么?这只是一个 SQL 问题吗?还是我需要一个 if 语句并运行一个单独的 SQL 查询。
恐怕我是自学 php 和 sql - 所以我不太清楚如何自己解决这个问题。
【问题讨论】:
-
您可以在此条目和图片上使用
left join
标签: php mysql if-statement mysqli prepared-statement