我正在尝试构建一个查询,根据类别列中的特定类别从表Feed中选择数据。 我有第二个表,其中列出了查询还应考虑的其他类别。我不知道如何在下面的代码中加入它。
例如: 如果$ category ='sports',则下面的当前查询会选择类别与'sports'匹配的所有数据。 第二张表列出了“体育”类别的替代类别“足球”和“拜仁慕尼黑”。 新查询现在应该选择所有类别匹配“sports”,“soccer”和“Bayern Munchen”的数据。
$sqlCommand = "SELECT * FROM feeds where category like '$category'";
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());
While ($row = mysqli_fetch_array($query)) {
$fid1 = $row["id"];
$feed_id1 = $row["feed_id"];
$link1 = $row["link"];
$title1 = $row["title"];
$output .= '<a href="detail/' . $fid1 . '" title="' . $title1 . '">' . $title1 . '</a><br/>';
}
mysqli_free_result($query);
echo $output;
答案 0 :(得分:1)
也许这样的事情可以做到:
CREATE TABLE data (data integer, category varchar(40));
INSERT INTO data (data, category) VALUES (10, "sport");
INSERT INTO data (data, category) VALUES (20, "soccer");
INSERT INTO data (data, category) VALUES (30, "programming");
INSERT INTO data (data, category) VALUES (40, "Bayern Munich");
CREATE TABLE category_lookup (category1 varchar(40), category2 varchar(40));
INSERT INTO category_lookup (category1, category2) VALUES ("sport", "Bayern Munich");
INSERT INTO category_lookup (category1, category2) VALUES ("sport", "soccer");
INSERT INTO category_lookup (category1, category2) VALUES ("programming", "java");
查询:
SELECT * FROM data WHERE category IN (
SELECT "sport" UNION
SELECT category2 FROM category_lookup WHERE category1 LIKE "sport");
参见SQL-Fiddle:http://www.sqlfiddle.com/#!9/a56b73/1/0
如果在category_lookup表中添加一个条目以进行自我查找:
INSERT INTO category_lookup (category1, category2) VALUES ("sport", "sport");
然后你可以在查询中摆脱UNION。