[SQL] JOIN > where clause is ambigious

Pagina: 1
Acties:
  • 36 views sinds 30-01-2008

  • burrug
  • Registratie: April 2005
  • Laatst online: 14-10-2024
Hallo,

Ik heb een drietal tabellen met allen vergelijkbare gegevens, deze gegevens moeten in aprate tabellen blijven, omdat het klantgegevens zijn van aparte onderaannemers binnen ons bedrijf.
Ik heb tot nu toe de tabellen samengevoegd met UNION ALL, maar wil dit nu doen met JOIN, zodat mijn SQL-statement een stuk korter wordt en dat scheelt weer in de grootte van mijn script.
Ik heb het volgende geprobeerd, maar ik kom er niet uit, hij geeft nl. geen resultaten.. Ik krijg de volgende foutmelding:

Notice: Column 'debnr' in where clause is ambiguous in W:\Web\Login\Algemeen\DB\debiteur.php on line 380

welke betrekking heeft op mysql_query($sql);


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 <?php
// Bouw query op met gekozen zoekveld en trefwoord
$sql = "SELECT
             debiteur_ts.debnr, debiteur_ts.debnaam, debiteur_ts.postadres, debiteur_ts.locadres, debiteur_ts.wplaats,   
             debiteur_bs.debnr, debiteur_bs.debnaam, debiteur_bs.postadres, debiteur_bs.locadres, debiteur_bs.wplaats, 
             debiteur_bsu.debnr, debiteur_bsu.debnaam, debiteur_bsu.postadres, debiteur_bsu.locadres, debiteur_bsu.wplaats
        FROM 
            debiteur_bs 
        INNER JOIN 
            debiteur_ts 
        INNER JOIN 
            debiteur_bsu
        WHERE       
                TRIM(debiteur_ts.debnr) NOT LIKE '' AND
                TRIM(debiteur_bs.debnr) NOT LIKE '' AND
                TRIM(debiteur_bsu.debnr) NOT LIKE '' 
        ORDER BY debiteur_ts.debnr,debiteur_bs.debnr,debiteur_bsu.debnr" or trigger_error(mysql_error());
?>

Tannoy Revolution R3 105W 6ohm, Marantz PM-7003 2x70W 8ohm, 2x JVG goud/goud, Marantz CD-6003, Marantz ST-6003


  • Icelus
  • Registratie: Januari 2004
  • Niet online
De kolom debnr komt in alle drie de tabellen voor. Je moet in de ORDER BY aangeven welke tabel je bedoelt. Bijvoorbeeld ORDER BY debiteur_ts.debnr.

Ook moet de WHERE nog met een ) afgesloten worden.

[ Voor 15% gewijzigd door Icelus op 22-06-2007 11:38 ]

Developer Accused Of Unreadable Code Refuses To Comment


  • burrug
  • Registratie: April 2005
  • Laatst online: 14-10-2024
Ok dit heb ik nu gedaan, inderdaad een beetje slordig, maar dat was alleen in mijn voorbeeld, voor 't eggie' had ik wel de WHERE afgesloten en gesorteerd op debiteur_ts.debnr

Dus de foutmelding is nog hetzelfde :)

excuses voor het ongemak

Tannoy Revolution R3 105W 6ohm, Marantz PM-7003 2x70W 8ohm, 2x JVG goud/goud, Marantz CD-6003, Marantz ST-6003


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 30-11 15:10

Creepy

Tactical Espionage Splatterer

Die foutmelding is erg duidelijk. Ergens in je query heb je het veld debnr staan en je DMBS weet niet uit welke tabel hij dat moet halen. Prefix het met de tabel naam of alias en je hebt geen problemen meer.

Zoeken op de melding in google geeft in elk geval een hoop bruikbare resultaten. Ik kan me dan ook niet voorstellen dat je zelf al wat moeite hebt gedaan om je probleem op te lossen. Indien je dit wil hebt gedaan ben je vergeten om dit te vermelden in je topicstart. Zie ook Programming Beleid en met name Programming Beleid - De Quickstart zodat je weet wat we van een topicstart verwachten.

Aangezien de melding echt niet duidelijker kan verwacht ik dat je het met de tips tot nu toe wel kunt oplossen. Als je wat zaken hebt geprobeerd ne je komt er echt niet uit dan kan je een nieuw topic openen. Let hierbij wel op het beleid en de quickstart zodat je een topicstart maakt met daarin genoeg informatie. Puur alleen je query dumpen met een foutmelding is hier not done.

[ Voor 3% gewijzigd door Creepy op 22-06-2007 11:56 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.