deze query werkt wel

$sql = "SELECT * FROM tp_lab_sample_results INNER JOIN tp_lab_sample_requests ON tp_lab_sample_requests.barcode = tp_lab_sample_results.barcode WHERE tp_lab_sample_results.barcode = '12AF830-3')"


en als ik een subquery gebruik krijg ik een foutmelding namelijk:
#1060 - Duplicate column name 'barcode'

"SELECT * FROM (".$sql.") AS xsldata"	


de code heeft altijd gewerkt maar bij deze query heb ik opeens dit probleem.

heeft iemand een idee

[size=xsmall]Toevoeging op 17/10/2012 16:35:35:[/size]

Hank Noseman op 17/10/2012 16:35:07

deze query werkt wel

$sql = "SELECT * FROM tp_lab_sample_results INNER JOIN tp_lab_sample_requests ON tp_lab_sample_requests.barcode = tp_lab_sample_results.barcode WHERE tp_lab_sample_results.barcode = '12AF830-3')"


en als ik een subquery gebruik krijg ik een foutmelding namelijk:
#1060 - Duplicate column name 'barcode'

"SELECT * FROM (".$sql.") AS xsldata"	


de code heeft altijd gewerkt maar bij deze query heb ik opeens dit probleem.

heeft iemand een idee?


Aliassen gebruiken en * zo veel mogelijk vermijden.

De query is dus zo:

SELECT * FROM (
  SELECT * 
  FROM tp_lab_sample_results 
  INNER JOIN tp_lab_sample_requests ON tp_lab_sample_requests.barcode = tp_lab_sample_results.barcode 
  WHERE tp_lab_sample_results.barcode = '12AF830-3'
) AS xsldata


Je hebt dus in de subquery zowel tp_lab_sample_results.barcode als tp_lab_sample_requests.barcode
Als ze mij zouden vragen welk van de twee overeenkomt met xsldata.barcode ... wel, ik weet het niet. MySQL denkt er het zelfde over.

Binnen de subquery vervang je dus de * door de velden die je echt nodig hebt. Vul zelf aan.
bv.

SELECT * FROM (
  SELECT 
    tp_lab_sample_requests.barcode as barcode, id, title
  FROM tp_lab_sample_results 
  INNER JOIN tp_lab_sample_requests ON tp_lab_sample_requests.barcode = tp_lab_sample_results.barcode 
  WHERE tp_lab_sample_results.barcode = '12AF830-3'
) AS xsldata


Die bovenste * kan dan weer geen kwaad, als de juiste velden gekozen zijn in de subquery
Wat voor zin heeft deze subquery, hier kan je net zo goed de buitenste query weglaten.
@Kris,

bedankt voor de reactie. Inderdaad zijn er in beide tabellen dubbele veldnamen.

PS wat ik wel eens gebruik is voor veldnamen de tabelnaam als prefix
bijv: tabel user: user_id, user_voornaam

Dat voorkomt dit probleem met dubbele veldnamen

Reageren