9

HTML5 インデックス付きデータベースで 2 つのテーブルを結合したいと考えています。レコードを追加、更新、削除、およびリストするロット サンプルが見つかりましたが、複数のテーブルを結合するサンプルが見つかりません。

  • サンプル URL: * http://users.telenet.be/kristofdegrave/ *
4

5 に答える 5

6

これらのテクノロジーを一般的に見ているだけでも、同じ疑問を抱いていました。特定の例を確認しませんでしたが、必要な場合に結合を行う方法に関する Mozilla の例を次に示します。

https://hacks.mozilla.org/2010/06/comparing-indexeddb-and-webdatabase/

SQLに比べるとかなりのコード量ですが、後からJavaScriptで抽象化するのはかなり楽だという考え方だと思います。

于 2012-10-13T08:28:15.850 に答える
3

結合はありませんが、複数のオブジェクト ストアを開き、カーソルの反復中に結合できます。

私自身のydn-dbSELECT * FROM Supplier, Part WHERE Supplier.CITY = Part.CITYライブラリを使用して、次の方法でクエリを実行できます

var iter_supplier = new ydn.db.IndexValueIterator('Supplier', 'CITY');
var iter_part = new ydn.db.IndexValueIterator('Part', 'CITY');
var req = db.scan(function(keys, values) {
  var SID = keys[0];
  var PID = keys[1];
  console.log(SID, PID);
  if (!SID || !PID) {
    return []; // done
  }
  var cmp = ydn.db.cmp(SID, PID); // compare keys
  if (cmp == 0) {
    console.log(values[0], values[1]);
    return [true, true]; // advance both
  } else if (cmp == 1) {
    return [undefined, SID]; // jump PID cursor to match SID
  } else {
    return [PID, undefined]; // jump SID cursor to match PID
  }
}, [iter_supplier, iter_part]);

詳細については、結合クエリの記事を参照してください。

于 2012-09-03T16:53:51.863 に答える
2

結合を試行する代わりに、データの格納方法を再設計して、結合が不要になるようにします。no-sql アプローチを使用している場合、SQL と同じ正規化制約に従う必要はありません。No-sql は、適切な場合に冗長なデータの格納をサポートします。

于 2013-05-27T16:09:20.380 に答える
1

私の知る限り、IndexedDBにはまだJOINを実行するためのAPIがありません。私が採用したソリューションには、カーソルを開き、結果をループして手動で結合することが含まれていました。これは恐ろしいRBARアプローチですが、これ以上の解決策は見つかりませんでした。

于 2012-08-14T10:12:30.790 に答える
1

実際、IndexedDB はオブジェクト ストアであり、通常、オブジェクト ストアでは、ネストされた構造を保存するだけで済むため、結合の必要性はほとんどありません。

あなたが示した場合、コードテーブルからのデータは実際のデータと結合されます。結合なしでこれを解決するには、コード テーブルをメモリにフェッチし (通常、このデータは変更されません)、コードで結合します。

于 2012-08-14T12:25:43.370 に答える