2017-02-17 3 views
0

Jeder Weg, um diesen Code zu verbessern? Ich versuche, alle Spalten von B zur gleichen Zeit eine andere Spalte von C basierend auf Dateinamen zwischen B und CJOIN zwei Tabellen, nur zurück zuerst

SELECT B.filename, B.request_num, B.attachment_name, 
B.date_time, B.received_date, B.ID, C.station_code 
FROM B_attachments B 
JOIN C_fact C ON C.filename = B.filename 
WHERE C.station_code LIKE '%OAK%' 

Was ich frage ist, ob es überhaupt kann ich vielleicht verwenden SELECT * entspricht anzuzeigen in dies, anstatt alle Spaltennamen zu schreiben. SELECT * gibt alle Spalten von B UND C zurück. Ich möchte nur B und eine Spalte von C. Ich brauche das, da ich diesen Code für andere Tabellen kopieren werde, die viel mehr Spalten als B haben. Die Verwendung von LINKER JOIN hat mir nicht geholfen entweder.

Jede Hilfe wird geschätzt. Dank

Antwort

1
SELECT B.*, C.station_code 
FROM ... 

tun sollten, es zu tun.

+0

Thank you! Das hat den Trick gemacht! –

1
SELECT B.*, C.station_code 
FROM B_attachments B 
JOIN C_fact C ON C.filename = B.filename 
WHERE C.station_code LIKE '%OAK%' 

Dies sollte den Trick

0

Ich denke, das Ihre spec erfüllt ("SELECT * statt verwenden, um alle Spaltennamen auszuschreiben", "den Code verbessern"):

SELECT * 
    FROM B_attachments 
     NATURAL JOIN 
     (SELECT filename, station_code 
      FROM C_fact 
      WHERE station_code LIKE '%OAK%') C;