sql >> Databasteknik >  >> RDS >> Oracle

Oracle Infoga via Välj från flera tabeller där en tabell kanske inte har en rad

Outter joins fungerar inte "som förväntat" i så fall eftersom du uttryckligen har sagt till Oracle att du bara vill ha data om det kriteriet i den tabellen matchar. I det scenariot görs den yttre kopplingen oanvändbar.

En lösning

INSERT INTO account_type_standard 
  (account_type_Standard_id, tax_status_id, recipient_id) 
VALUES( 
  (SELECT account_type_standard_seq.nextval FROM DUAL),
  (SELECT tax_status_id FROM tax_status WHERE tax_status_code = ?), 
  (SELECT recipient_id FROM recipient WHERE recipient_code = ?)
)

[Redigera]Om du förväntar dig flera rader från ett underval kan du lägga till ROWNUM=1 till varje where-sats ELLER använda en sammanställning som MAX eller MIN. Detta kanske inte är den bästa lösningen för alla fall.

[Redigera] Per kommentar,

  (SELECT account_type_standard_seq.nextval FROM DUAL),

kan vara bara

  account_type_standard_seq.nextval,


  1. Ska jag skapa en klass som ärver SQLiteOpenHelper för varje tabell i min databas?

  2. psql:FATAL:roll postgres existerar inte

  3. Kostnaden för gratis PostgreSQL-reklam

  4. Släpp primärnyckeln med skript i SQL Server-databasen