0

ここでいくつかの助けが(高度な)mysqlでお願いします。例は、問題をはるかによく示しています。それで..

事前定義された値のペアテーブルPARTNERSがあり、partner1列とpartner2列があります。そして、partner1列とpartner2列を持つ別のテーブルPROJECTSがあります。

したがって、partner1列とpartner2列が上記の実際のパートナーテーブル内にあるすべてのプロジェクトを選択したいと思います。

明らかに、「partner1=...および/またはpartner2=...」を単純に示すことはできません。これは、これら2つがパートナーであるかどうかのチェックがないためです(PARTNERSテーブルで定義されています)。(念のため:パートナー関係にないpartner1とpartner2のプロジェクトがあります。)

結果に条件が格納されているので、このようなクエリはまったく不可能だと思います。しかし、そうでないことを証明できれば幸いです。ありがとう

4

1 に答える 1

2

パートナー1とパートナー2の両方がPARTNERSの任意の行と同じである、PROJECTSからの行を提供するクエリが必要なようです。したがって、内部結合を行います。

SELECT * FROM projects
INNER JOIN partners
    ON projects.partner1 = partners.partner1
    AND projects.partner2 = partners.partner2

テーブルを再構築する場合は、PARTNERSのすべての行に一意のIDを割り当て、そのIDをPROJECTSテーブルで使用する方が理にかなっている場合があります。そうすれば、冗長データの2つの列を保存する代わりに、プロジェクトに参加している学生のペアを示す1つの列ができます。

于 2012-07-27T17:42:51.460 に答える