使用第二个表

时间:2018-04-04 04:56:39

标签: php mysql mysqli

我正在尝试构建一个查询,根据类别列中的特定类别从表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;

1 个答案:

答案 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。