Ho una tabella chiamata map_tags
:PostgreSQL: Sub-select inserto all'interno
map_id | map_license | map_desc
e un altro tavolo (widgets
) le cui scritture contiene un riferimento chiave esterna (1 a 1) a un record map_tags
:
widget_id | map_id | widget_name
Dato il vincolo che tutte le map_license
s sono unici (tuttavia non sono impostati come tasti su map_tags
), quindi se ho una map_license
e widget_name
, mi piacerebbe realizzare un inserto su widgets
tutto all'interno della stessa istruzione SQL:
INSERT INTO
widgets w
(
map_id,
widget_name
)
VALUES (
(
SELECT
mt.map_id
FROM
map_tags mt
WHERE
// This should work and return a single record because map_license is unique
mt.map_license = '12345'
),
'Bupo'
)
Io credo Sono sulla strada giusta, ma so destra fuori del blocco che si tratta di SQL non corretta per Postgres. Qualcuno conosce il modo corretto per ottenere una singola query?
avete mai fatto con PostgreSQL, ma non dovrebbe apparire come 'INSERT INTO widget SELEZIONA NULL, MAP_ID, 'Bupo' FROM WHERE map_tags map_license = '12345''? – raina77ow
Grazie @ raina77ow (+1) - Non sono sicuro se è quello che dovrebbe essere. L'istruzione 'SELECT' al posto della sintassi' (...) VALUES (...) 'mi sta sicuramente buttando fuori. Ti dispiacerebbe spiegarmi come dovrebbe funzionare? Grazie ancora! –
Beh, lo uso come [this] (http://dev.mysql.com/doc/refman/5.1/en/insert-select.html) in MySQL ... La ragione, suppongo, è che tu costruisci l'intero insieme di dati che verrebbero inseriti e VALORI ((SELECT smth), 'smth_else') semplicemente non lo fa.) – raina77ow