0

私は自分のアプリを Django から ASP.NET Webforms に移植しています (私の意志に反しますが、企業の世界で何ができるでしょうか..)。Django がすべての SQL クエリを生成することに慣れているので、助けが必要です。procesomarcador、 の3 つのテーブルがあります。marcador_progreso

すべてprocesoには多数の がmarcador_progresoあり、これは への外部キー テーブルmarcadorです。

したがって、基本的にテーブルは次のようになります。

proceso
    id

marcador
    id
    text

marcador_progreso
    id
    marcador_id
    proceso_id
    state

現在のプロセス (URL の QueryField から) であるすべてのmarcador_progreso場所について、それをリストする必要があります。私は EntityFramework で作業してきましたが、これは二重クエリのようなものなので、その方法がわかりません。proceso_idstatemarcador.text

次の2つのステートメントを組み合わせたものだと思いますが、どうすればよいかわかりません。

SELECT [state] FROM [marcador_progreso]
SELECT [text] FROM [marcador] WHERE ([id] = marcador_id)
4

2 に答える 2

1

参加したい:

SELECT mp.state, m.text
FROM marcador_progreso as mp
INNER JOIN marcador as m
ON mp.marcador_id = m.id

これは、さまざまな結合タイプを網羅した優れた投稿です。

于 2012-07-05T15:11:23.813 に答える
0

JOIN内で複数のテーブルを呼び出すには、sについて知りたいと思うでしょう。それぞれに共通の値を使用して、データベース内の2つ以上のテーブルのレコードを結合します。さまざまなタイプがあります。以下のSQLの例は結合であり、両方のテーブルが共通の値と一致するレコードのみを取得します。(marcador_progreso)テーブルに一致するレコードがない場合でも 、テーブル(この場合はmarcador)に存在するすべてのレコードを取得する結合を検討することをお勧めします。以下をManagementStudioにポップし、さまざまな結合で再生します。をに置き換え、を使用せずに実行します。`JOINについて読んでください。 FROMJOININNERLEFTLEFTRIGHTINNERLEFTWHERE

一般に、独自のクエリを作成するという新しいベンチャーの場合、それらはすべて同じ基本構造で始まります 。SELECT(UPDATE、WHATEVER DMLステートメントなど)(COLUMNS)表示したいもの(updateなど)
FROM(TABLE) whereこれらのレコード は、データが満たす必要のあるWHERE(FILTER / LIMIT)条件に対応しています。

SQL:

DECLARE @ProcessoId int
SET @ProcessoId = --1

SELECT m.[STATE],mp.[TEXT] 
FROM marcador M
INNER JOIN marcador_progreso MP ON MP.marcador_id = m.id
WHERE proceso_id =  @ProcessoId

EF内部の例

var marc = from m in yourcontext.marcador
           join mp in yourcontext.marcador_progreso on m.id equals mp.marcador_id
           where proceso_id ==  processoIdvariable

EFLEFTの例

  var marc = from m in yourcontext.marcador
           join mp in yourcontext.marcador_progreso on m.id equals mp.marcador_id into details
           from d in details.DefaultIfEmpty()
           where proceso_id ==  processoIdvariable
于 2012-07-05T15:15:22.630 に答える