25. februar 2004 - 11:28
Der er
28 kommentarer og 1 løsning
SQL sætning
Hej eksperter Jeg skal bruge en SQL sætning, som vælger alle de poster fra tabel1 hvor der ikke er nogen poster i tabel2 som er relateret. tabel1 indeholder nyheder og tabel2 indeholder kommentarer til nyheder. Så jeg skal altså bruge alle de nyheder, som ikke er kommenterede. Nogle forslag ?
Annonceindlæg fra Deloitte
25. februar 2004 - 11:41
#2
Eller nested SQL: Select * From Nyheder where nyhedsid not in (select Nyhedsid From Kommentarer) ;
25. februar 2004 - 11:41
#3
Jeg har lige hurtigt prøvet, og umiddelbart ser det ud til at den vælger alle poster fra tabel1 Mit eksempel: SQL = "SELECT news.id, news.topic, news.addeddate FROM news LEFT OUTER JOIN comments ON comments.newsid = news.id;" Hvad gør jeg galt ?
25. februar 2004 - 11:43
#4
m_sorensen >> HVad sker der hvis du skriver Right istedet for left ? eller evt skriver: SQL = "SELECT news.id, news.topic, news.addeddate FROM news LEFT OUTER JOIN comments ON news.id = comments.newsid;"
25. februar 2004 - 11:49
#5
SQL="Select news.id, news.topic, news.addeddate FROM news WHERE news.id not in (Select comments.newsid FROM comments);"
25. februar 2004 - 11:56
#6
Jeg prøver lige begge svar, men serveren er lige død for mig :/
25. februar 2004 - 12:37
#7
Jacobclausen >> Dit forslag hiver stadig alle poster fra tabel1 ud. madschristensen >> jeg får en syntax fejl med dit forslag
25. februar 2004 - 12:43
#8
Hmmm... SQL="Select id, topic, addeddate FROM news WHERE id not in (SELECT newsid FROM Comments);" Hvilken database bruger du ?
25. februar 2004 - 12:47
#9
mySQL
25. februar 2004 - 12:59
#10
Sætningen virker i db2 og SAS...
25. februar 2004 - 13:01
#11
m_sorensen >> Ja når du bruger mysql tror jeg du er nødt til at bruge noget Join. Prøv at læse artiklen igennem, som jeg henviser til, og find den rette funktion.
25. februar 2004 - 13:02
#12
Men den er der jo ikke.. jeg kan, efter hvad jeg kan se, kun finde de poster fra tabel1 hvor joinet til tabel2 holder, og ikke omvendt.
25. februar 2004 - 13:06
#14
Prøver
25. februar 2004 - 13:07
#15
Min fejl! Om Inner join står der: Ved at lave en INNER JOIN der relaterer felterne typeid i tabellerne kunder og kundetype vil resultatet blive de poster fra tabellen kunder som har en relateret post i kundetype. Altså de felter hvor kundetypeid = kundetypeid. Og det er vel det du skal have?
25. februar 2004 - 13:09
#16
[TCX][MyODBC]You have an error in your SQL syntax near '(SELECT newsid FROM comments)' at line 1
25. februar 2004 - 13:09
#17
jakobclausen >> det er lige det modsatte jeg skal have. Jeg skal have alle de poster som ikke har en relateret post.
25. februar 2004 - 13:09
#18
SELECT news.id, news.topic, news.addeddate FROM news INNER JOIN comments ON news.id=comments.news
25. februar 2004 - 13:13
#19
25. februar 2004 - 13:15
#20
jakobclausen >> den tager stadig alle poster fra tabel1 hvor den finder en relateret post i tabel2
25. februar 2004 - 13:17
#21
SELECT id, topic, addeddate FROM news WHERE NOT EXISTS (SELECT news.id, news.topic, news.addeddate FROM news INNER JOIN comments ON news.id=comments.news); Så har du brugt begge løsninger *GGG*
25. februar 2004 - 13:19
#22
Og så vil sætningen skulle se sådan ud: SQL = "SELECT news.id, news.name, news.addeddate FROM news WHERE NOT EXISTS (SELECT newsid FROM comments WHERE comments.newsid = news.id);" men den giver en syntax fejl
25. februar 2004 - 13:21
#23
Nej sådan kan den ikke se ud, men prøv lige den oppe over...
25. februar 2004 - 13:22
#24
samme fejl... :( jeg fatter det ikke
25. februar 2004 - 13:26
#25
SQL="SELECT news.* FROM news LEFT JOIN comments ON news.id=comments.news WHERE comments.news IS NULL;" Den virker i tidlige versioner af MySQL
25. februar 2004 - 13:31
#26
Super - den virker. Du får point.
25. februar 2004 - 13:39
#27
Takker for point
25. februar 2004 - 15:23
#28
Fik slet ingen point for at henvise til Left join *snøft* :-)
26. februar 2004 - 08:39
#29
Jo da - jeg deler gerne - har lige oprettet et spørgsmål - det svarer du bare på ;O)))
Kurser inden for grundlæggende programmering