2017-11-14 5 views
-1

Ich suche eine MySQL-Lösung zum Sammeln von Abfragen, die einige Ints (IDs in einem Array) enthält.SQL Query-Ergebnis mit Werten aus einem Array

Example-Table: 

id1 id2 id3 
1 2 2 
2 3 2 
3 3 5 
4 4 2 
5 4 5 
6 4 7 

Ich habe ein Array wie

$id3array = (2,5); 

Ich brauche ID2 = 3 (nicht 4, weil ID2 "4" ein weiteres ıd3 Argument hat (7)

Wenn ich habe ein Array wie

$id3array = (2,5,6); // array can contains 20 and more arguments 

In diesem Beispiel Tabelle ich brauche ID2 = 0 (weil keine Übereinstimmung)

Meine Tests mit IN (2,5) oder Group by waren nicht erfolgreich - Ist das mit MySQL zu lösen?

http://www.sqlfiddle.com/#!9/b71306/2

+1

Dies ist nicht klar. Bitte verwenden Sie genügend Sätze, Sätze und Wörter, um zu sagen, wie die gewünschte Ausgabe als Funktion der Eingabe aussieht. ZB du schreibst "weil", aber du erklärst nicht klar, was die Konsequenz * ist * und du erklärst nicht, * wie * die Vorgaben es implizieren. Lies bitte auch [mcve]. Auch Fiedeln sind gut, aber setzen Sie relevanten Text in die Frage selbst. – philipxy

+0

Es tut mir wirklich leid für mein schlechtes Englisch. Ich versuche es nochmal zu erklären: Ich brauche output id2 = 3 wenn meine Eingabe id3 = 2 und 5 – Korty

+1

Hi ist. Dein Englisch ist nicht das Problem. Das Problem ist, dass du nicht meinst was du meinst. Sie sagen, dass ein Fragment der Ausgabe ein Fragment der Eingabe ist. Aber 1. du erklärst nicht, wie, gibst du nur Zahlen und 2) du sagst nicht, wie die gesamte Ausgabe für die Eingabe in deinem Beispiel aussieht und 3) du sagst nicht, was es ein Beispiel * von * ist . Sie hoffen nur, dass wir raten, wie willkürliche Ausgabe mit willkürlichen Eingaben in Beziehung steht, indem wir uns ansehen, wie ein Fragment mit einem anderen verwandt ist. Bitte * erkläre dich selbst *. (Versuchen Sie es mit einer anderen Sprache, dann translate.google.com, die in letzter Zeit viel besser über AI ist.) – philipxy

Antwort

1

Try Abfrage nach. Setzen Sie die innere Abfrage, die mit den Datensätzen übereinstimmt, die nicht im gewünschten Array sind. Dann Gruppe und

genaue Element zählen
SELECT `id2` FROM `exampletable` WHERE `id3` IN (2,5) AND `id2` NOT IN (
    SELECT e.id2 from exampletable e WHERE e.id3 not in (2,5)) GROUP BY `id2` 
HAVING count(`id2`) = 2; 

Hier habe ich hinzugefügt count (id2) = 2, weil Sie zwei Elemente in Array

DEMO

+0

Vielen Dank für Ihre Hilfe! Dies ist eine ausgezeichnete Lösung – Korty

+0

für count (id2) Ich verwende in php count ($ id2array) – Korty

+1

ja genau .... –

Verwandte Themen