2012-01-25 4 views
2

多対多リレーションシップを持つ2つのテーブルがあるとしましょう(つまり、リレーションシップにのみ使用される3番目のテーブルがあります)。SOCI C++データベースアクセスライブラリでテーブル関係を管理することは可能ですか

SOCIはステートメント内のさまざまなタイプの「結合」をサポートしていますか?

「はい」の場合は、すべてのデータベース(ドキュメントのバックエンドと呼ばれます)で動作しますか?

ありがとうございます!

+0

結合はデータベースレベルであり、クエリレベルではありません。 – DumbCoder

+0

@DumbCoder select ... joinを行うことができるので、クエリレベルにもなります。 – unludo

+1

申し訳ありませんが、より明確になったはずです。結合はselect文に置かれますが、DbレベルのDbエンジンでのみ使用されます。あなたのステートメント/エディタ(もしあれば)は、あなたが結合語を入れてもしなくても、最適化をしないかどうか気にしません。 – DumbCoder

答えて

2

SOCIでは、依然としてSQL文を作成する必要があります。その場合はjoinを入れることができます。 SOCIは、基本的にはちょうどあなたが

  1. into(...)rowsetなどとの)素敵な方法で返された結果で動作するようにして
  2. use(...)で)SQLクエリにあなたの入力データを取得するのに役立ちます。

selectの結果は、行のリストだけであるので、関係なく、あなたがjoinかを使用するかどうか、それらを使用してからあなたを止めるものは何もありません。

+0

ありがとう! これは、SQLクエリが基礎となるデータベース・ドライバに直接渡されることを意味しますか? SOCIは、異なるデータベース間でSQL形式の相違点についていくつかの修正を行っていますか? – unludo

+0

AFAIK、SOCIはそういうことをしません。あなたはSOCIの上でこれを行う必要があります。 –