我正在研究一个过滤器,用户可以为最终输出选择不同的条件。现在,我正在构建SQL查询,但是每当选择更多条件时,它就不会起作用。
广告值表的示例。
+----+-----------+---------------+------------+
| id | listingId | value | identifier |
+----+-----------+---------------+------------+
| 1 | 1a | Alaskan Husky | race |
+----+-----------+---------------+------------+
| 2 | 1a | Højt | activity |
+----+-----------+---------------+------------+
| 3 | 1c | Akita | race |
+----+-----------+---------------+------------+
| 4 | 1c | Mellem | activity |
+----+-----------+---------------+------------+
如您所见,每个advalue都有不同的行。
我期望的结果
比方说,用户选中/选中了“阿拉斯加雪橇犬”竞赛的复选框,然后应返回比赛的 listingId (一次)。如果用户将“阿拉斯加雪橇犬”和活动级别都选择为“低”,则它应不返回任何内容,如果活动级别为“梅勒姆”或“霍伊特”(中,高),则应在以下位置返回listingId该种族仅是“阿拉斯加雪橇犬”,而不是“秋田”。希望您了解我要完成的工作。
我尝试过类似的操作,但不会返回任何内容。
SELECT * FROM advalues WHERE (identifier="activity" AND value IN("Mellem","Højt")) AND (identifier="race" AND value IN("Alaskan Husky"))
顺便说一句,我也想选择不同的listingId,所以它只返回唯一的listingId。
我将继续寻找解决方案,这是我在过去几个小时中一直在做的,但是也想在这里发布,因为我还没有找到任何可以帮助我的东西。谢谢!
答案 0 :(得分:1)
您可以将 identifier 上的限制分为两种类型。然后,您加入listingid以获得具有两种类型的标识符的listingId。
public partial class MainWindow : Window
{
HttpClient client = new HttpClient();
public MainWindow()
{
InitializeComponent();
client.BaseAddress = new Uri("http://localhost:80");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
this.Loaded += MainWindow_Loaded;
getStatusContent();
getCategorias();
}
async void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
try
{
HttpResponseMessage response = await client.GetAsync("/bdevApi/api/index/keyacessoUbasd42123/CategoriaExame");
response.EnsureSuccessStatusCode(); // Lança um código de erro
var getData = await response.Content.ReadAsAsync<IEnumerable<Categoria>>();
}
catch (Exception ex)
{
MessageBox.Show("Erro : " + ex.Message);
}
}
}
答案 1 :(得分:0)
这个问题尚不清楚,但是我想你想要这个:
WHERE (identifier="activity" AND value IN("Mellem","Højt")) OR (identifier="race" AND value IN("Alaskan Husky"))
答案 2 :(得分:0)
如果我答对了,您正在尝试使用其他“过滤器”获取数据。
您的查询
SELECT listingId FROM advalues
WHERE identifier="activity"
AND value IN("Mellem","Højt")
AND identifier="race"
AND value IN("Alaskan Husky")
在您要求identifier = "activity" AND identifier = "race"
时,将始终返回0个结果
我想您想做这样的事情:
SELECT listingId FROM advalues
WHERE
(identifier="activity" AND value IN("Mellem","Højt"))
OR
(identifier="race" AND value IN("Alaskan Husky"))