- ベストアンサー
SQLite3でこんな便利なSQLはできますか?
こんにちは。 SQLite3で次のようなクエリを書けるかどうかご存じの方、教えてください。 文房具の商品レコードを格納したテーブルがあります。 えんぴつ50円、ノート100円、ホチキス150円といった具合です。このテーブルから無作為にレコードを取り出し続けたいのですが、取り出した複数レコードの金額の合計が1000円を超えたところでストップしたいです。1050円でも1200円でもいいのですが、超えたところで止めたいのです。 インターフェイスとしてPHPを予定していて、そこででごにょごにょすればできるのですが、そもそもSQLの時点でこうしたことができるのかご存じの方教えてください。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- sql文のヵウント関数について
sql文のcountを使い、humanテーブルのレコード件数を取得し出力したいのですが、 Object of class SQLite3Result could not be converted to string in のエラーが出て困っています。 (1)humanテーブルのレコード件数を表示する方法を教えてください。(sql文はうまく動いているのが確認できているので、表示する方法を教えていただきたいです。データベースの接続も正常です。) (2)sqlの出力って配列のみなのでしょうか? <?php // 変数の初期化 $db = null; $query=null; $con =null; $db = new SQLite3("test.db"); $res = $db->query ($sql); // データの取得 $query = "SELECT count (id) from human"; //クエリを実行 $con = $db->query($query); //データの件数を表示する print $con; ?>
- ベストアンサー
- PHP
- SQLiteのデータベースについて
PHP初心者です。以下のSQLiteより作成するデータベースについて教えてください。 $DB = sqlite_open('db1.db'); $sql="create table tables(id integer ,name,texts)"; $result=sqlite_query($db,$SQL); 上記、プログラムにより、同ディレクトリに、db1.dbが作成されますが、このデータベース情報はどのようにして、閲覧するのでしょうか(MS-ACCESS、SQLのように簡単に閲覧できないのか)。主キーやテーブルの名前またはフィールドの名前の変更、データ一覧閲覧などどのようにするのでしょうか。 環境は、Windows環境で、PHP4を使用しております。 よろしくお願いいたします。
- ベストアンサー
- PHP
- SQLの性能
クエリアナライザで実行すると30秒くらいかかるようなSQLがあるのですが、修正の余地について教えてください。 抽出元となるテーブルのレコード数が多くても、クエリの書き方やインデックスの張り方で速くなるのは知っていますが、限界はないのでしょうか? 単純に抽出元となるテーブルのレコード数が多いことが原因なのか、クエリやインデックスが原因なのかを判断する方法を教えてください。
- 締切済み
- SQL Server
- SQLite:項目が存在しない場合のみINSERT
SQLiteのテーブル内にunique属性を持つフィールドがあります。このフィールドと同名の内容を追加するとエラーが返りますが、SQLiteを呼び出すプログラム側で逐一そのエラーを例外処理しているため、プログラムとしては効率が悪いです。「(If not exist (...) insert ...のような)もしこの項目内容が存在しなければフィールドを追加する」という処理をSQLのクエリ文で完結させたいのですが、このようなことはできますでしょうか。
- ベストアンサー
- その他(データベース)
- SQlite
SQLiteを使って メールを保存するデータベースを作っています。 以下のようになっています。 さらに、 アドレス帳を作りたいのですが 新たにデータベースを開くのか 同じデータベースで別のテーブルを開けばよいのかわかりません。 ご存知の方よろしくお願いします。 また、 C++からSQLiteを扱う上での参考書などもありましたら 教えてください。 rc = sqlite3_open(".\\mailbox\\SQMail.db", &db); if( rc ){ AfxMessageBox("Can't open database:", MB_OK); sqlite3_close(db); return; } rc = sqlite3_exec(db, "create table MailTbl (id INTEGER PRIMARY KEY, attach varchar(20), subject varchar(120),addressfrom varchar(80),addressto varchar(80),date varchar(80),size integer,priority integer, read integer, state integer, alldata blob);", callback, 0, &zErrMsg); if( rc!=SQLITE_OK ){ // AfxMessageBox("SQL error:", MB_OK); sqlite3_free(zErrMsg); }
- ベストアンサー
- C・C++・C#
- VBAとSQLITEでAddNewメソッド
こんにちは! Access VBAとSQLITEを接続して、SQLITEにデータをインサートしたいと思っています。 ADOを利用して、ADDNEWメソッドでデータを入れたいのですが、うまく動きません。 書いているコードは下記になります。 'ローカル定数 'Xはネットワークドライブ Const DRIVER_NAME As String = "Driver=SQLite3 ODBC Driver;Database=X:\test.sqlite3;" 'コネクト Set CON = New ADODB.Connection Set RS = New ADODB.Recordset CON.ConnectionString = DRIVER_NAME CON.Open 'レコードセット sql = "select * from TABLE1" table = "TABLE1" '↓問題無く通りますが、TABLE1にはデータが1件も存在しません。 RS.Open sql, CON, adOpenDynamic, adLockOptimistic '↓ここで実行エラー 3021 BOFとEOFのいずれかがTrueになっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。と表示されます。 RS!F1 = "abc" '↑TABLEにはデータが一件も無い為に、このようなメッセージが表示されると思います。 '↓ODBCドライバは要求されたプロパティをサポートしていません。と表示されます。 RS.Open table, CON, adOpenDynamic, adLockOptimistic 何故、上記のようなメッセージが表示されるのでしょうか?これを解決してAddNewメソッドでデータの挿入を行いたいと思っています。 宜しくお願いします!
- ベストアンサー
- Visual Basic
- SQLiteで、ランダムにレコードに番号を振るには
お世話になります。 SQLite3で、テーブル中のレコードをランダムに 並び替えた後、その順番で1から番号を入れて いきたいのですが、それを少手順でできるSQL等は ありますでしょうか。 例えば、 1,りんご,0 2,いちご,0 3,いちじく,0 4,トマト,0 5,ほうれんそう,0 等とあった場合、一番最後の場所に、 3,いちじく,1 5,ほうれんそう,2 2,いちご,3 1,りんご,4 4,トマト,5 …と、1から順に番号を振りたいのです。 勿論、一つ一つ順を追っていけば、できない事ではありませんが、 頻繁に繰り返して行いたいのでできれば軽く、早くしたいのですが…。 良い方法がありましたらお教えください。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- [ACCESS97]SQLの書き方
グラフのレコードソースにクエリ・SQLを使用しています。データ入力チェックに使おうと思っています。妙なデータがはいった場合、グラフが乱れるのではないかと。 ソートは日付でしています。 それで、100レコードずつを順番に表示していきたいのですが、top値 だと最初からいくつ、、としか指定できません。これを、レコードの途中の任意の位置から取るにはどうしたらいいのでしょうか? IDとかのようにユニークな値でソートしているのであれば、大小関係で一発ですが、同じ値がいくつも存在する日付なもので困っています。 日付でソートしたものを配列に入れる、もしくは一度テーブルに書き出す等も考えているのですが、SQLでできたら助かります。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- SQLiteのLike句で抽出できない
SQLiteのLike句で抽出できないレコードがあります。 原因についてご教授いただけますでしょうか。 以下、操作手順になります。 ■データベースの作成 C:\>sqlite3.exe member.db SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" ■テーブルの作成、レコードの追加 sqlite> create table t_member(name text, age integer); sqlite> insert into t_member values('山田一郎', 25); sqlite> insert into t_member values('田中次郎', 35); sqlite> insert into t_member values('鈴木三郎', 45); ■検索 sqlite> select * from t_member where name like '%一郎'; 山田一郎|25 sqlite> select * from t_member where name like '%次郎'; 田中次郎|35 sqlite> select * from t_member where name like '%三郎'; sqlite> 三郎だけが検索条件に適合しないのは何故でしょうか。 よろしくお願いします。
- 締切済み
- その他(データベース)
- SQLiteで日付の取得
SQLiteのクエリについてお教え頂けませんでしょうか? テーブル名:MyTable 列名:MyDate(TEXT型) MyDateのデータ 20150501102722_XYZ 20150502102722_AVC 20150505102722_BCD データはYYYYMMDDHHMMSS形式 + ランダムなアルファベットになっています。 クエリで201502以上のデータを取得したいと思っています。つまり、 20150502102722_AVC 20150505102722_BCD 上記の2つのデータが欲しいです。 そこで下記のようなSQLを書きました。 SELECT * FROM MyTable WHERE MyDate >= substr(1,8) しかしデータは1件も取得できませんでした。 そこで、試しに下記のようなクエリも書いてみましたが、これもダメでした。 SELECT * FROM MyTable WHERE MyDate = substr(1,8) どのようにすれば、データを取得する事ができるでしょうか?よろしくお願いいたします。
- ベストアンサー
- その他(データベース)
お礼
ありがとうございます!!! すごいですね。技術的な面もそうですが、発想にも驚きました。 SQLiteの実力にも驚きます!