新規投稿
フォローする

【kintone】GETする際に特定のレコードの値を取得する際のクエリの書き方

GETにより、「西暦」(数値列)カラム(フィールド)の値が2018の場合、「ユニーク」(数値列)が最大値のものを取得したいというquery発行してレコードの値を取得したいのですが、記述方法がわかりません。。

通常のSQL文であれば以下の様に書きたいところですが、kintoneのクエリの書き方は使える演算子等はマニュアルに載っているのですが、そもそも文法的にどのように書けばいいのかが載っていませんでした。。

SELECT  MAX (unique) From table WHERE seireki =2018

 

もちろん以下のクエリでは"西暦"を正しく条件指定していないので、意図した動作をしません。

var body = {

app:1;

"query": "order by \"ユニーク\"  disc limit 1 offset 0"

fieslds:["ユニーク"]

}

どなたか、本件の正しいクエリの書き方や、条件を付した場合のkintoneのクエリの書き方がしっかり載っている記事やマニュアル等あれば合わせて教えていただけると幸いです。

宜しくお願い申し上げます。

0

10件のコメント

Avatar
PV

記述方法は問題なさそうですが、descではなくdiscになっているところは問題ないですか?

西暦を指定する場合は、

"query": "seireki = 2018 order by \"ユニーク\"  desc limit 1 offset 0"

のようになるかと思います。

1
Avatar
ryoryo

コメントを頂き、有難うございます。

しかしながら以下のコードで実行したところ、err側が出力されconsolelog上

下記のBad Requestが出力されてしまいました。考えられることはseirekiが文字列ボックスであるため2018の数値型では

エラーがでる?くらいなのですが、記法には問題がないでしょうか?

 

var body ={
"app":6,
"query": "\"起案時期(西暦)\" = 2019 order by \"起案時期(番号)\" desc limit 1 offset 0",
"fields":["起案時期(番号)"]
};

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
// success
console.log(resp);
}, function(error) {
// error
console.log("errorを出力");
});

 

show.js:1140 GET https://wがxxxxxxx.cybozu.com/k/v1/records.json?app=6&query=%22%E8%B5%B7%E6%A1%88%E6%99%82%E6%9C%9F%EF%BC%88%E8%A5%BF%E6%9A%A6%EF%BC%89%22%20%3D%202019%20order%20by%20%22%E8%B5%B7%E6%A1%88%E6%99%82%E6%9C%9F%EF%BC%88%E7%95%AA%E5%8F%B7%EF%BC%89%22%20%20desc%20limit%201%20offset%200&fields[0]=%E8%B5%B7%E6%A1%88%E6%99%82%E6%9C%9F%EF%BC%88%E7%95%AA%E5%8F%B7%EF%BC%88 400 (Bad Request)

ryoryoにより編集されました
0
Avatar
ryoryo

なお、ディベロッパーツール上のエラーは以下の通り出力されてります。

  1. {code: "CB_VA01", id: "CX2bEZ4YXXXXXXXWJFL", message: "入力内容が正しくありません。",…}
    1. code"CB_VA01"
    2. errors{id: {messages: ["必須です。"]}}
    3. id"CX2bEZ4YgnVBOWGCWJFL"
    4. message"入力内容が正しくありません。"
0
Avatar
ryoryo

因みに\"起案時期(西暦)\"等はフィールド名でフィールドコードではありません。

といいつつどちらでやってもエラーに変わりはなかったのですが、、

0
Avatar
PV

フィールドコードが「起案時期」だった場合、

"query": "起案時期 = 2019 order by 起案時期 desc limit 1 offset 0",

だととうなりますか?

1
Avatar
ryoryo

無事取得できました!

本当に困っていたのでとても助かりました、

心より御礼申し上げます。

0
Avatar
Ryu Yamashita

慣れるとどうということはないですが、最初は試行錯誤になりますね。逆説的ですが、次の記事で紹介している一覧の絞り込みとの関係性はクエリの書き方を理解する方法のひとつとなります。

https://www.joyzo.co.jp/blog/1277

0
Avatar
ryoryo

コメントありがとうございます。

これまで見た記事よりもはるかにヒントになります。

因みにそもそもなんですが、andで複数条件がある場合にはクエリの書き方として

記載する条件の順番は特に問われないのでしょうか?

っていう基本的なところを見つけられていない状況です。

0
Avatar
安藤 光昭

And の条件は順番を変えても取得できる結果は同じです。関連する記載はこの辺りでしょうか。
https://developer.cybozu.io/hc/ja/articles/115001436186-%E7%AC%AC4%E5%9B%9E-%E3%82%AF%E3%82%A8%E3%83%AA%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%A6%E6%9B%B4%E6%96%B0-%E4%B8%A6%E3%81%B3%E9%A0%86%E5%A4%89%E6%9B%B4%E3%82%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

 

kintoneの内部でどのように処理されているかはブラックボックスですから、検索スピードなどに影響があるかどうかなど気になるところではありますが、利用者の立場からは謎のままです。

0
Avatar
ryoryo

安藤様

ご教示いただきありがとうございます。

確かに記載がございました。

内部的なRDBが何を使っているのか等とても気になっていたのですが、この類のサービスでは

まったくつまびらかにはされていないのですね~。

いずれにしても、お力添えに深謝を申し上げます。

1
サインインしてコメントを残してください。