2016-03-22 4 views
3

Ich habe diese 4 Tischemysql: die Kombination von Spalten aus für Tabellen

table FRUIT, ID is Primary key 

|  ID | code | A | B  | 
-------------------------------------------- 
|  1  | a01 | apple1 | quava1 | 
|  2  | a02 | apple2 | quava2 | 


table FLOWER, ID is Primary key 

|  ID | code | C | D  | 
-------------------------------------------- 
|  1  | a01 | Rose1 | Plumer1 | 
|  2  | a02 | Rose2 | Plumer2 | 


table ANIMAL, ID is Primary key 

|  ID | code | E  | F  | 
-------------------------------------------- 
|  1  | a01 | butterfly1 | cat1  | 
|  2  | a02 | butterfly2 | cat2  | 

table DAY, code is Primary key 

| code | G |  
------------------------------------- 
| a01 | Monday | 
| a02 | Tuesday| 

Ich möchte diese vier Tabellen in wie diese

| ID | A | B | C | D | E  | F | G  |code | 
-------------------------------------------------------------------------------- 
| 1 | apple1 | quava1 | Rose1 | Plumer1 |butterfly1 | cat1 |Monday |a01 | 
| 2 | apple2 | quava2 | Rose2 | Plumer2 |butterfly2 | cat2 |Tuesday |a02 | 

dies der Code aufzurufen und kombiniert ist:

SELECT day*, fruit*, flower*, animal* 
     FROM day 
     LEFT JOIN fruit 
       ON day.code = fruit.code 
     LEFT JOIN flower 
       ON day.code = flower.code 
      LEFT JOIN flower 
       ON day.code = animal.code 
      ORDER BY day.code DESC; 

es wird gesagt, dass Spaltencode mehrdeutig ist. und kann den Tisch nicht zeigen. Ich brauche Hilfe. Wie kann ich das beheben?

+2

in Ihrer Abfrage vergessen Sie zu schreiben . zwischen table_name und * –

+0

@gtviga Bitte lesen Sie meine Antwort unten. Bitte geben Sie ein Feedback. – CodeGodie

Antwort

0

ich es tun würde in diese Art und Weise, Aliases und JOINs unter Verwendung aller Tabellen (einschließlich der animal Tabelle, die Sie vergessen haben) zu verbinden, und natürlich nicht zu vergessen, die Zeiten enthalten . bei Bedarf:

SELECT fr.ID, fr.A, fr.B, fl.C, fl.D, a.E, a.F, d.G, fr.code 
FROM `day` AS d 
LEFT JOIN `fruit` AS fr ON d.code = fr.code 
LEFT JOIN `flower` AS fl ON d.code = fl.code 
LEFT JOIN `animal` AS a ON d.code = a.code 
ORDER BY d.code ASC; 
+0

war das nur ein zufälliges Drive-by-Downvote? irgendwelche Gründe warum? – CodeGodie

+0

Danke CodeGodie. Ich habe versucht, mit Aliases, und setzen Sie die dots.it funktioniert :) – gtviga

+1

@gtviga genial. Wenn Sie das Gefühl haben, dass dies hilfreich ist, können Sie meine Antwort durch Klicken auf den Pfeil nach oben auf der linken Seite aufheben und meine Antwort akzeptieren, indem Sie auf das Häkchen auf der linken Seite klicken. Vielen Dank. Lassen Sie es mich wissen, wenn Sie weitere Hilfe benötigen. – CodeGodie

0

Sie . zwischen column_name und * wie day.*
Probieren Sie diese

SELECT `day`.*, fruit.*, flower.*, animal.* 
      FROM `day` 
      LEFT JOIN fruit 
        ON `day`.code = fruit.code 
      LEFT JOIN flower 
        ON `day`.code = flower.code 
       LEFT JOIN flower 
        ON `day`.code = animal.code 
       ORDER BY `day`.code DESC; 
0

Neben der Tatsache hinzuzufügen vergessen, dass Sie einen Punkt vergessen '' zwischen dem Tabellennamen und dem *, das ist weil Sie sind die Auswahl-ID und den Code Spalte aus jeder Tabelle, müssen Sie angeben, von wo aus Sie die Auswahl, wenn es mehr als 1 Optionen:

SELECT fruit.A,fruit.B, flower.C,flower.D, animal.E,animal.F,day.G,day.code 
     FROM day 
     LEFT JOIN fruit 
       ON day.code = fruit.code 
     LEFT JOIN flower 
       ON day.code = flower.code 
      LEFT JOIN animal 
       ON day.code = animal.code 
      ORDER BY day.code DESC; 
+0

Warum ist Blume in der Hauptstadt 'BLUME'? Macht es einen Unterschied? – CodeGodie

+0

Ich war gerade in einer anderen Sprache, also drückte ich SHIFT :) @CodeGodie – sagi

+0

Gotcha. Vielen Dank. – CodeGodie

Verwandte Themen