[英]Getting data from sql database and then use it for select query via php
我有這個分配表:
PROJECT_ID | NAME_ID
1 1
1 2
2 1
2 2
我的php代碼如下所示:
<html>
<body>
<?php
mysql_connect("xxx","xxx","xxx")
or die ("Connection failed");
mysql_select_db("xxx")
or die ("Connection failed");
$res = mysql_query("SELECT PROJECT_ID FROM Projects_Names WHERE NAME_ID=1 AND 2");
$num = mysql_num_rows($res);
echo "$num Projects found<br />";
while($dsatz = mysql_fetch_assoc($res))
{
echo $dsatz["PROJECT_ID"] . "<br />";
}
?>
然后,這將給我以下輸出:
2 Projects found
1
2
到現在為止還挺好。 但是我基本上想要的是找出雇員1和雇員2都參與的項目的名稱。我還有兩個表。 具有項目名稱,ID等的Projects表和具有名稱,ID等的Employee表...
我現在基本上想說:
“在“項目”表中查找剛剛作為輸出提供的ID(1,2),並給我這些項目的名稱”
我希望有人能給我一些有關如何解決此問題的意見,我昨天才剛開始使用sql + php,所以有很多東西要學習:)
最好的選擇是結合使用GROUP BY
和COUNT
和HAVING
來獲得想要的東西
SELECT project_id, COUNT(DISTINCT name_id) AS `name_count`
FROM projects_names
WHERE name_id IN (?,?,...)
GROUP BY project_id
HAVING `name_count` = n
在這里,您將列出所有感興趣的name_id值,並且n
等於要搜索的name_id值的數量。 因此,如果您要查找name_id 1和2,則將使用n =2。這意味着找到所有要運行id的項目,但是可能還會涉及到其他name_id(不包括在計數中)他們被過濾掉了)。
那是錯誤的語法。 您應該這樣單獨編寫:
$res = mysqli_query($con, "SELECT PROJECT_ID FROM Projects_Names WHERE NAME_ID=1 AND NAME_ID = 2");
或使用in
$res = mysqli_query($con, "SELECT PROJECT_ID FROM Projects_Names WHERE NAME_ID in (1,2)");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.