eddy1Medlem sedan aug. 2001969 inlägg Vad gör jag för fel när jag får typblandningsfel??
Får detta fel:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i uttryck.
/faktura/faktura.asp, line 41
är det något fel i denna sats?
SQL = "Select tbl_fakturor.kund_id, tbl_fakturor.datum, tbl_kunder.namn From tbl_fakturor INNER JOIN tbl_kunder ON tbl_fakturor.kund_id = tbl_kunder.namn"
Försöker sätta mig in i det här med inner join satser, men det var svårt för mig..
LarsG var sjysst och gav mig ett exempel! Men det var lite svårt för mig att tyda!
select k.namn as kund, f.namm as foretag, a.artikel_id, a.pris
from tbl_kunder k join tbl_fakturer fa on k,kund_id = fa.kund_id inner join
tbl_foretag f on fa.foretag_id = f.foretag_id inner join
tbl_faktura_artiklar faa on fa.faktura_id = faa.faktura_id inner join
tbl_artiklar a on faa.id = a.artikel_id
undrar en sak, varför slriver man t.ex k.namn? var kommer det ifrån? det finns ju ingen tabell som heter k?
Har letat lite info om inner join på nätet men inte riktigt hajat det !!
Mvh
solbulleMedlem sedan mars 20015 287 inlägg Det förefaller som om:
tbl_fakturor.kund_id = tbl_kunder.namn
inte är av samma typ, känns inte riktigt som om de ska vara det heller? Har du verkligen använt dig av rätt fält där?
red. humpelidumpeli...
PDahlenMedlem sedan apr. 2004778 inlägg 1. Detta ser fel ut "ON tbl_fakturor.kund_id = tbl_kunder.namn". Jag gissar att kund_id är ett nummer och namn en textsträng. De kolumner du joinar på måste vara av samma typ.
2. Anledningen att man skriver k.namn är för att man gjort en förkortning av tabellerna som används.
"from tbl_kunder k" innebär att tabellen tbl_kunder refereras till med k istället. Då kan man skriva k.namn istället för tbl_kunder.namn. Det blir smidigare då.
3. JOIN innebär att du kopplar samman två tabeller. Den ena tabellen måste ha en Foreign Key som motsvarar den andra tabellens Primary Key.
I LarsG:s exempel så har tbl_kunder den primära nyckeln kund_id. tbl_fakturor har en kolumn som innehåller ett kundid för att man ska veta vilken kund fakturan tillhör. När man då använder en JOIN på dessa två kolumner så kan du göra en SELECT på alla kolumner i de båda tabellerna.
Om du använder LEFT OUTER JOIN så innebär det att alla kunder kommer med, även om de inte har några fakturor. Då får man värdet NULL där fakturainformationen skulle stått.
Här är en lite bättre förklaring, http://www.w3schools.com/sql/sql_join.asp