webForumDet fria alternativet
Logga in / Bli medlem

SQL-fråga

Databaser & SQL

10 svar · 291 visningar · startad av lillebror

Medlem sedan apr. 20041 597 inlägg
Trådstart#1

Hej! Nu har jag hållt uppe med SQL:andet än tid då jag lagt tiden på design av ett nytt projekt. Nu har jag dock äntligen kommit till det som är roligt - SQL-satskonstruktion :e

Behöver lite hjälp med en sats. Det är hur enkelt som helst men fick det bara inte att fungera.

Så här ser tabellerna ut (något förkorttade):

tblMember
==============
memberID
username

tblArticle
==============
articleID
date_time
headline
content
published
memberID

Den information jag vill ha ut i en sats från dessa tabeller är: articleID, date_time, headline, content, username

Jag får ut all information förutom användarnamnet eftersom man måste koppla tabellerna. Det är här problemet uppstår.

Så här ser min nuvarande sql-sats ut. Har för mig att man kunde använda sig av nästlande satser?! :OO

"SELECT date_time, headline, content, (SELECT username FROM tblMember WHERE tblMember.memberID = tblArticle.memberID) FROM tblArticle, tblMember WHERE articleID = $ID";
Medlem sedan dec. 200012 464 inlägg
#2

Vilket problem upplever du med den koden? Om du skriver på det viset så skall du inte ha tblMember med i den yttre frågan.

SELECT date_time, headline, content, 
(SELECT username 
FROM tblMember 
WHERE tblMember.memberID = tblArticle.memberID) 
FROM tblArticle
WHERE articleID = $ID

Det finns alternativa sätt att skriva frågan.

Medlem sedan apr. 20041 597 inlägg
#3

Detta är felkoden jag får:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT username FROM tblMember WHERE tblMember.memberID = tblAr

Nu har jag gjort de förändringar som du påpekade och det blir fortfarande fel! :OO

Kan tillägga att jag använder mig av MySQL...

Medlem sedan apr. 20041 597 inlägg
#4

Hur skulle man skriva ovanstående fråga med en JOIN-sats?

Medlem sedan dec. 200012 464 inlägg
#5
SELECT date_time, headline, content, username 
FROM tblMember , tblArticle
WHERE tblMember.memberID = tblArticle.memberID
WHERE articleID = $ID
Medlem sedan apr. 20041 597 inlägg
#6

Får nu följande fel med ovanstående sats...

You have an error in your SQL syntax.
Check the manual that corresponds to your MySQL
server version for the right syntax to use
near 'WHERE articleID = 1' at line 1
Medlem sedan apr. 20041 597 inlägg
#7

Jag förstår inte att det inte fungerar. Så här knepigt tycker jag inte att det varit förut! :)

Medlem sedan apr. 20041 597 inlägg
#8

Prövade att plocka bort den nästlade satsen och skicka iväg den ensam i SQL-frågan.

SELECT username FROM tblMember AS t1, tblArticle AS t2 WHERE t1.memberID = t2.memberID

Då fick jag ut det användarnamn jag efterfrågade. Det verkar bli något knas när den ligger inbakad i den resterande delen av SQL-frågan?!

Medlem sedan dec. 200012 464 inlägg
#9

Jag slarvade när jag klippte ihop svaret. Det andra WHERE skall vara AND

SELECT date_time, headline, content, username 
FROM tblMember , tblArticle
WHERE tblMember.memberID = tblArticle.memberID
and articleID = $ID
Medlem sedan apr. 20041 597 inlägg
#10

Nu fungerar det utmärkt! :e Tack för hjälpen!

Hur gör jag för att dela upp SQL-satsen på flera rader när jag låt säga använder mig av PHP. Det blir så otympligt att ha den på en ända lång rad!

Medlem sedan dec. 200012 464 inlägg
#11
$q = "select date_time, headline, content, username " .
" FROM tblMember , tblArticle " .
" WHERE tblMember.memberID = tblArticle.memberID " .
" and articleID = " . $ID ;
258 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)