2016-03-30 23 views
5

Desidero unire due tabelle utilizzando lo stesso plug-in di archiviazione. Ma una delle colonne mostra valore nullo. Sto usando questa query: -Problema con join su tabelle SQL Server con stesso plug-in e stesso tipo di dati

select * from SqlServer.test_mopslive.reports as Reports join  
SqlServer.test_mopslive.reportsetting as ReportSetting on Reports.ID = ReportSetting.ID 

Qui SqlServer è bagagli Plugin Nome, test_mopslive è Nome database, reports, reportsetting sono nomi delle tabelle.

Durante l'esecuzione di questa query T_ID che mostra Null.

Ma se sto usando due diversi nomi di plugin di archiviazione con le stesse credenziali funziona correttamente.

TABELLA 1: -

create table Reports (ID bigint, Name varchar(25)); 

insert into Reports values (29, 'SqlThree'); 
insert into Reports values (30, 'SqlTwo'); 
insert into Reports values (31, 'SqlThree'); 

TABLE 2:-

CREATE TABLE ReportSetting 
( 
P_id bigint not null auto_increment primary key, 
Name varchar(25), 
ID bigint, 
CONSTRAINT fk_ID FOREIGN KEY (ID) 
REFERENCES Reports(ID)); 

insert into ReportSetting values (1,'My_Sreekant1', 29); 
insert into ReportSetting values (2,'My_Sreekant2', 30); 
insert into ReportSetting values (3,'My_Sreekant3', 31); 

E 'possibile unire due tabella utilizzando lo stesso nome del plugin di stoccaggio? Se sì, allora cosa sto sbagliando in questa domanda?

+0

@dev: - È possibile unire due tabelle utilizzando lo stesso nome del plug-in di archiviazione? – Sanjiv

+0

sì è possibile. Non ho provato con il server SQL. Ma in generale, dovrebbe funzionare –

+0

@dev: - Potrebbe dirmi cosa sto facendo di sbagliato in questa query ..? – Sanjiv

risposta

0

Continui a cambiare il testo della tua domanda e codice - stavi usando un GIUSTO ESTERNO GIUSTO prima e ora, stai usando un semplice JOIN che è lo stesso di INNER JOIN.

Dal momento che si sta utilizzando un INNER JOIN, non sarà possibile ottenere tutte le righe sia da tavolo che non soddisfano la tua condizione di join:

join SqlServer.test_mopslive.reportsetting ReportSetting 
on Reports.ID = ReportSetting.ID 

Se si esegue questa query (contro SQL Server - I don' so come funziona Drill), non ci saranno righe in cui Reports.ID o ReportSetting.ID non sono uguali, né si avranno delle righe in cui uno di essi è nullo. Significato, se un Report non ha voci nella tabella ReportSetting, quel Report non viene visualizzato nel tuo set di risultati e, se un ReportSetting non ha una corrispondenza nella tabella Report, non verrà visualizzato nel tuo set di risultati .

se si stesse utilizzando un RIGHT OUTER JOIN, si dovrebbe ottenere tutte le righe nel join bersaglio tavolo (ReportSetting), con i dati dalla sorgente JOIN (Reports), se disponibili, altrimenti nulla in quei campi.

se si stesse utilizzando un ESTERNO LEFT JOIN, si dovrebbe ottenere tutte le righe nel join fonte tabella (report), con i dati del JOIN bersaglio (Impostazioni rapporto), se disponibili, altrimenti nulla in quei campi .

Se si stesse utilizzando un full outer join, si otterrà tutti righe da entrambe le tabelle. con valori null nei campi in cui non esiste una corrispondenza.

+0

: - Ho provato con tutto il join (sinistro, destro, completo..etc), ma ho ancora lo stesso problema. – Sanjiv

+1

Puoi mostrare la query e il risultato effettivi? Non vedo alcuna colonna denominata T_ID. – Eric

+0

: - Possiamo continuare in chat .. per favore .. – Sanjiv