|  | Posted by Ed Murphy on 02/22/07 17:06 
dhek wrote:
 >>> I have a very simple issue: for simplicity lets say I have 2 tables, A
 >>> and
 >>> B.
 >>>     - Table A contains 5 fields. Amongst these there is a 'id'-field
 >>> which
 >>> is but a reference to table B.
 >>>     - Table B contains 2 fields: 'id' and 'text'
 >>>
 >>> In order to post data to table A I thus (from a known text value that
 >>> should
 >>> match 1 value in B.text) have to get the value of B.text before
 >>> performing
 >>> the UPDATE/INSERT statement.
 >>>
 >>> How is this possible?
 >>>
 >>> I would have thought something like
 >>>
 >>> INSERT INTO A (val1, val2, val3, ID, val4)
 >>> VALUES ('x1','x2','x3', SELECT id FROM B WHERE [SOME TEXT VALUE] =
 >>> B.text,
 >>> 'x4')
 >>>
 >>> however this is not possible, so I'm lost - not experienced in the arts
 >>> of
 >>> SQL:-)
 >>>
 >>> Hope someone can help.
 >>>
 >>> Best Regards,
 >>> Daniel
 >> Try something more like this:
 >>
 >> INSERT INTO ATable(val1, val2, val3, ID, val4)
 >> SELECT 'x1', 'x2', 'x3', b.id, 'x4'
 >> FROM BTable b
 >> WHERE b.Text = ['Your Text Here']
 >
 > But this is not possible since table B only contains 2 fields (id, and text)
 > or am I misunderstandig u?
 
 The SELECT portion only gets one of its five values (b.id) from
 table B; it gets the other four from the values provided directly
 on the SELECT line (which, in practice, might instead be input
 parameters to a stored procedure).
 
 Consider this hypothetical alternative:
 
 INSERT INTO ATable(val1, val2, val3, ID, val4)
 SELECT c.x1, c.x2, c.x3, b.id, c.x4
 FROM BTable b
 JOIN Ctable c on b.id = c.id
 WHERE b.Text = ['Your Text Here']
 
 Obviously x1 through x4 aren't taken from table B in this case.  In
 Utahduck's example, x1 through x4 aren't taken from /any/ table.
  Navigation: [Reply to this message] |