11
4

4 に答える 4

13

私は以下がうまくいくはずだと信じています:

SELECT  *
 FROM  Recipes
LEFT JOIN Recipe_Prep_Texts USING (ID_Prep_Text)
LEFT JOIN Recipe_Pictures USING (ID_Picture)
LEFT JOIN mp_References USING (ID_Reference)
于 2009-12-24T10:20:57.637 に答える
4

結合しているほとんどのテーブルには、最初の列を除いていくつかの列があるように見えるので、どうですか:

   SELECT Recipes.*,
          Recipe_Prep_Texts.Preparation_Text,
          Recipe_Pictures.Foo, -- describe is missing in OP
          mp_References.ID_Title,
          mp_References.ID_Category

     FROM Recipes
LEFT JOIN (Recipe_Prep_Texts, Recipe_Pictures, mp_References)
       ON (
           Recipe_Prep_Texts.ID_Prep_Text = Recipes.ID_Prep_Text AND
           Recipe_Pictures.ID_Picture = Recipes.ID_Picture AND
           mp_References.ID_Reference = Recipes.ID_Reference
          );

何度も言いたくない

SELECT (* - foo) FROM table

特に、foo が BLOB のような巨大なフィールドであり、フォーマットを崩さずに他のすべてを表示したい場合は特にそうです。

于 2009-12-24T06:44:40.430 に答える
2

結合された結果のテーブルから*を選択しています。その*を保持したい列に制限します。

于 2009-12-24T00:32:01.803 に答える
1

次のクエリを試してください。

SELECT  name,ac,relation_name
FROM  table1
LEFT JOIN table2 USING (ID_Prep_Text)
LEFT JOIN table3 USING (ID_Picture);
于 2016-03-03T12:39:04.433 に答える