webForumDet fria alternativet

column kommentar in field listis ambiguous

18 svar · 401 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 027 inlägg
#1

vad betyder detta
Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Column: 'kommentar' in field list is ambiguous

/Gallery/viewComment.asp, line 14

rad 1 är första raden

Set kommentarRS=objConn.Execute("SELECT DISTINCT username, vemKollar, anvandare, bild, rubrik, inlagd, kommentar, nytt, Postad, bildID, picture "&_
"FROM tblUsers INNER JOIN tblUsers_Galleri_kommentar INNER JOIN tblUsers_Galleri ON tblUsers_Galleri_kommentar.bildID = tblUsers_Galleri.bildID AND tblUsers_Galleri_kommentar.agare = tblUsers_Galleri.agare ON tblUsers.userID = tblUsers_Galleri_kommentar.vemKollar "&_
"GROUP BY username, vemKollar, anvandare, bild, rubrik, inlagd, tblUsers_Galleri_kommentar.Kommentar, nytt, Postad, bildID, picture, anvandare, rubrik, bild, agare, rubrik "&_
"HAVING tblUsers_Galleri_kommentar.bildID="& ID &" AND tblUsers_Galleri_kommentar.agare="& uid &" ORDER BY Postad DESC")
LarsGMedlem sedan dec. 200012 464 inlägg
#2

Att kolumnen kommentar finns definierad i mer än en av de tabeller som förekommer i fromklausulen. Du får kvalificera kolumnnamnet med lämpligt tabellnamn.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#3

med tblusers_galleri_kommentar.Kommentar får jag detta

Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown table 'tblusers_galleri_kommentar' in field list

/Gallery/viewComment.asp, line 14

WebbisNetMedlem sedan feb. 20032 027 inlägg
#4

gick ju utmärkt med access med den koden.....med denna lilla ändring förstås...

WebbisNetMedlem sedan feb. 20032 027 inlägg
#5

och sen har jag ytterligare en fråga när det gäller galleriet. Med denna kod kan jag se raden när jag kör sql-en i MySQL

Set bildRS=objConn.Execute("SELECT userID, username, agare, bildID, inlagd "&_
"FROM tblUsers INNER JOIN tblUsers_Galleri ON tblUsers.userID = tblUsers_Galleri.agare order by inlagd desc limit 4")

men när jag ska visa den på sidan så syns ingenting

<span class="rubrik_s">Senaste 4 inlagda i galleriet:</span><hr>
<%if bildRS.eof then
response.write "<span class=""presentation1"">Inga bilder finns inlagda</span><br>"
do until bildRS.EOF%>
<table border="0" width="231">
<tr>
<td align="left" width="95">
<a class="menu" href="/Gallery/?userID=<%=bildRS("userID")%>&usr=<%=bildRS("username")%>"><b><%=bildRS("username")%></b></a>
</td>
<td align="left" width="126" class="presentation">
<%=right(replace(bildRS("inlagd"),"-",""),15)%>
</td>
</tr>
</table>
<%bildRS.MoveNext: Loop
end if%>

även här funkade det utmärkt i access

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Jag har tittat lite närmare på din fråga. Det är väldigt sällan man behöver både distinct och group by och i ditt fall tror jag att bådadera är onödiga. Det behövs heller ingen having då den typen av villkor skall anges i where. Sen så är dina joinuttryck konstiga,det är lättare att se om man skriver

from a join b on ... 
  join c on ...

Jag skulle skriva din fråga som

SELECT 
  username, 
  vemKollar, 
  anvandare, 
  bild, 
  rubrik, 
  inlagd, 
  kommentar, 
  nytt, 
  Postad, 
  bildID, 
  picture 
 FROM tblUsers u 
   INNER JOIN tblUsers_Galleri_kommentar gk ON 
       u.userID = gk.vemKollar
   inner join tblUsers_galleri g on 
       gk.bildID = g.bildID 
    and gk.agare = g
where gk.bildID=  & ID  
AND gk.agare= & uid & 
ORDER BY Postad DESC

och sedan så skulle jag kvalificera alla kolumner i select-listan. (Jag ger mig inte på det då jag inte vet något om dina tabelldefinitioner.)

<%if bildRS.eof then
response.write "<span class=""presentation1"">Inga bilder finns inlagda</span><br>"
do until bildRS.EOF%>

Jag förstår inte hur det kan ha fungerat med Access.

<%if bildRS.eof then
    response.write "<span class=""presentation1"">Inga bilder finns inlagda</span><br>" 
else 
    do until bildRS.EOF%>
WebbisNetMedlem sedan feb. 20032 027 inlägg
#7

tillbaka på samma fel som tidigare

Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown table 'tblUsers_galleri_kommentarer' in field list

/Gallery/viewComment.asp, line 14

Set kommentarRS=objConn.Execute("SELECT username, vemKollar, anvandare, bild, rubrik, inlagd, tblUsers_galleri_kommentarer.kommentar, nytt, Postad, bildID, picture FROM tblUsers u INNER JOIN tblUsers_Galleri_kommentar gk ON u.userID = gk.vemKollar inner join tblUsers_galleri g on gk.bildID = g.bildID and gk.agare = g where gk.bildID="& ID &" AND gk.agare="& uid &" ORDER BY Postad DESC")

/red kommentarer var kommentar men samma fel

aasahMedlem sedan mars 20034 471 inlägg
#8

I din select-sats plockar du ut 'kommentar'. Precis som LarsG tidigare skrev måste det kolumnnamnet förekomma i minst två av de tabeller du joinar. Du måste alltså tala om vilken du vill ha ut.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#9

Nu är det tblUsers som den klagar på och det är enbart username som ska plockas ur den tabellen

Microsoft OLE DB Provider for ODBC Drivers error '80040e31'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown table 'tblUsers' in field list

/Gallery/viewComment.asp, line 15

Set kommentarRS=objConn.Execute("SELECT tblUsers.username, tblUsers_Galleri_kommentar.vemKollar, "&_
"tblUsers_Galleri_kommentar.anvandare, tblUsers_Galleri_kommentar.bild, "&_
"tblUsers_Galleri_kommentar.rubrik, tblUsers_Galleri_kommentar.inlagd, "&_
"tblUsers_Galleri_kommentar.Kommentar, tblUsers_Galleri_kommentar.nytt, "&_
"tblUsers_Galleri_kommentar.Postad, tblUsers_Galleri_kommentar.bildID, tblUsers.picture "&_
"FROM tblUsers u "&_
"INNER JOIN tblUsers_Galleri_kommentar gk ON u.userID = gk.vemKollar "&_
"INNER JOIN tblUsers_galleri g on gk.bildID = g.bildID and gk.agare = g "&_
"WHERE gk.bildID="& ID &" AND gk.agare="& uid &" ORDER BY Postad DESC")
@ndersMedlem sedan juni 200032 969 inlägg
#10

Du har ju gett tblUsers aliaset u. Då får du använda det också.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#11

nu har jag crosscheckat båda galleritabellerna och det verkarstämma men jag får ändå

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]Unknown column 'g' in 'on clause'

/Gallery/viewComment.asp, line 15

SELECT u.username, gk.vemKollar, gk.anvandare, g.bild, "&_
"g.rubrik, g.inlagd, gk.Kommentar, gk.nytt, gk.Postad, gk.bildID, u.picture "&_
"FROM tblUsers u "&_
"INNER JOIN tblUsers_Galleri_kommentar gk ON u.userID = gk.vemKollar "&_
"INNER JOIN tblUsers_galleri g on gk.bildID = g.bildID and gk.agare = g "&_
"WHERE gk.bildID="& ID &" AND gk.agare="& uid &" ORDER BY gk.Postad DESC

tabell gk
bildID int(11) Ja 0
vemKollar int(11) Ja 0
anvandare char(50) Ja NULL
agare int(11) Ja 0
Kommentar char(255) Ja NULL
Postad datetime Ja NULL
nytt tinyint(1) Ja NULL

tabell g
bildID int(11) Nej auto_increment
agare int(11) Ja 0
bild varchar(50) Ja NULL
inlagd datetime Ja NULL
rubrik varchar(50) Ja NULL
kommentar longtext Ja NULL
clicks varchar(50) Ja 0

ps: säg till om jag är jobbig :-)

@ndersMedlem sedan juni 200032 969 inlägg
#12

Läs igen.

"INNER JOIN tblUsers_galleri g on gk.bildID = g.bildID 
and gk.agare = g[b]<HÄR SAKNAS NÅGOT>[/b] "&_
WebbisNetMedlem sedan feb. 20032 027 inlägg
#13

@nders skrev:

Läs igen.

"INNER JOIN tblUsers_galleri g on gk.bildID = g.bildID 
and gk.agare = g[b]<HÄR SAKNAS NÅGOT>[/b] "&_

men det var ju så jag såg att du skrev

inner join tblUsers_galleri g on
gk.bildID = g.bildID
and gk.agare = g
where gk.bildID= & ID

@ndersMedlem sedan juni 200032 969 inlägg
#14

Va?

Det enda jag säger är att när du hänvisar till ett fält så måste du ange tabellens alias istället för tabellnamnet, om du har gett tabellen ett alias. g är ett tabellalias, inte ett fältnamn som du försöker säga att det är.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#15

@nders skrev:

Va?

Det enda jag säger är att när du hänvisar till ett fält så måste du ange tabellens alias istället för tabellnamnet, om du har gett tabellen ett alias. g är ett tabellalias, inte ett fältnamn som du försöker säga att det är.

Förlåt mig @nders, det var LarsG som skrev *skäms*

@ndersMedlem sedan juni 200032 969 inlägg
#16

Ok, det saknas i alla fall något där, som LarsG missade, så du får fylla i det.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#17

det funkar nu

Set kommentarRS=objConn.Execute("SELECT u.username, gk.vemKollar, gk.anvandare, g.bild, "&_
"g.rubrik, g.inlagd, gk.Kommentar, gk.nytt, gk.Postad, gk.bildID, u.picture "&_
"FROM tblUsers u "&_
"INNER JOIN tblUsers_Galleri_kommentar gk ON u.userID = gk.vemKollar "&_
"INNER JOIN tblUsers_galleri g on gk.bildID = g.bildID and gk.agare = g.agare "&_
"WHERE gk.bildID="& ID &" AND gk.agare="& uid &" ORDER BY gk.Postad DESC")
LarsGMedlem sedan dec. 200012 464 inlägg
#18

Det var nog nedanstående jag tänkte skriva

and gk.agare = g.agare
WebbisNetMedlem sedan feb. 20032 027 inlägg
#19

LarsG skrev:

Det var nog nedanstående jag tänkte skriva

and gk.agare = g.agare

Tack för all hjälp trots att jag kanske var lite jobbig :-)

134 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)