2017-01-01 1 views
0

Array lesen json - memsqlArray lesen json - memsql

Ich habe Array, wo Elemente ein JSON ist.

Tabelle:

CREATE TABLE `example` (
orderId BIGINT, 
`data` JSON NULL 
); 

Beispiel Rekord

orderId -> ZA/XYZ 
data -> [ 
{'item':1,'price':20}, 
{'item':2,'price':30}, 
{'item':3,'price':40} 
(...) 
] 

Wenn ich den Befehl bin auf der Suche, die mindestens ein Produkt größer als 20 haben, verwende ich diese SQL:

SELECT orderId FROM example WHERE data::`0`::price > 20 OR data::`1`::price > 20 OR data::`2`::price > 20 (...) OR OR OR.... 

Aber ich weiß nicht, wie viele Produkte es in Bestellungen gibt.

Gibt es eine Lösung für dieses Problem?

Vielleicht so etwas wie folgt aus:

SELECT orderId FROM example WHERE data::*::price > 20 ?? 

Antwort

0

Leider ist dieses wir nicht direkt zur Zeit unterstützen.

Eine Abhilfe hierfür ist eine Referenztabelle zu schaffen, mit Zeilen, die 0, 1, 2, ...:

create reference table r (i bigint primary key); 
insert into r values (0), (1), (2), ...; 

Dann kommt ihr das und jede ganze Zahl verwenden, um den zugeordneten Wert aus dem Array zu packen und testen Sie den Schlüssel:

select distinct orderId from example, r where json_extract_double(json_extract_json(data, r.i), 'price') > 20;