2017-07-25 4 views
0

ich einen Tisch haben, sehen aus wie dieses enter image description hereMySQL Suche per char

und ich möchte die Tabelle abzufragen suchen sie, dass GROUP_CONCAT(product_id SEPARATOR ', ') Feld haben 7 und 10.

Like Aussage arbeitet für mich nicht gut, weil es nur ist die erste Zeile zeigt und nicht die dritte Zeile zeigt, auch hat es 7 und 10 aber mit 8 zwischen ihm getrennt ..

enter image description here

Ist Gibt es eine WHERE STATEMENT, die ich dafür verwenden kann?

Antwort

1

Warum sollte beunruhigt sein?

Versuchen Sie, diese

SELECT * from table where field REGEXP 'abdan|copin|sher'; 
+0

uhh okay, der 'REGEXP' Code funktioniert für mich. danke –

+0

was bedeutet '' abdan | copin | sher''? –

+0

Es war der Gegenstand des Namens, den Sie finden möchten –

0

Sie wollen keine where Klausel, möchten Sie eine having Klausel:

having sum(product_id = 7) > 0 and 
     sum(product_id = 10) > 0 
+0

es mir eine leere Menge ist zu geben ... hier ist meine SQL, die ich mit dem 'having' sugestion laufen' select * from (SELECT purchase_order_id, GROUP_CONCAT (product_id SEPARATOR '') als product_ordered von ufi_purchaseorderdetail GROUP BY purchase_order_id) als Having-Summe (product_ordered = 7)> 0 und Summe (product_ordered = 10)> 0; ' –

+0

meinst du' product_ordered'? weil ich versuche, auf product_ordered Feld zu suchen (bitte schauen Sie auf das zweite Bild) –

0

Sie mögen '7%10' für diesen Fall nutzen können. Wenn die Zeichenfolge 10, 8, 7 ist, müssen Sie '10%7' in der Abfrage einschließen. Ich habe schon früher einen ähnlichen Fall mit Ihnen gehabt, aber ich habe die Daten nicht auf Ihre Weise gespeichert.

Dies ist eine ManyToMany Zuordnung, so dass Sie die group_contact in einer anderen Tabelle group(id int primary key, group int not null) speichern können. Verwenden Sie dann eine dritte Tabelle middle_table(order_id int, group_id int), um sie zuzuordnen. Hoffe diese Hilfe für dich.