Kom ihåg mig?
Home Menu

Menu


Slutföra SQL query

 
Ämnesverktyg Visningsalternativ
Oläst 2012-09-05, 17:07 #1
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Standard Slutföra SQL query

Hej, ska hämta alla inlägg där kolumnen thread inte är noll och i en annan tabell där kolumnen forum = $_GET["f"]

Den första tabellens kolumns 'thread' har en koppling till ID-numret till den andra tabbellen.

Jag har kommit såhär långt:

SELECT * FROM forum_posts WHERE thread != '0' ORDER BY date DESC

Men jag skulle vilja ha det något såhär:

SELECT * FROM forum_posts WHERE thread != '0' AND IN TABLE 'table2' IS 'forum_column' = $_GET["f"] ORDER BY date DESC

Queryn över är ett exempel på hur jag vill att det ska fungera, men jag vet inte hur jag skriver det på riktigt.
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-05, 18:15 #2
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Jan Eriksson Jan Eriksson är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2004
Inlägg: 1 352
Det jag misstänker att du söker är JOIN

SELECT col1, col2 FROM table1 JOIN table2 ON table1.id = table2.id WHERE table1.col1 = '0'

http://www.w3schools.com/sql/sql_join.asp
Jan Eriksson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-05, 18:20 #3
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Jo, ja glömde att tillägga att min query ska sluta såhär:

ORDER BY MAX(forum_posts.date) DESC

Men om jag ska använda JOIN så får jag inte med mig 'date' för alla andra rader där thread har värdet 1 eller mer.

Det jag vill ha ut av hela queryn är alla trådar i ett forum sorterat på vilket datum tråden gjorde eller när senaste inlägget i en tråd gjordes. Då jag säger 'eller' menar jag att om en tråd inte har några inlägg så skall man sortera på publiceringsdatumet.
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-05, 18:56 #4
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Det verkar som du har syntaxen helt fel, beskriv vad du vill göra i stället så man fårstår vad du egentligen vill.

Du använder MAX() på helt fel sätt så det är svårt att förstå vad du egentligen är ute efter!

sen undrar jag varför thread är en textcolumn? den borde väl vara numerisk?

Senast redigerad av Conny Westh den 2012-09-05 klockan 18:59
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-05, 20:00 #5
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
http://fuskbugg.se/dl/P46GNS

Sorry att det är en bild med det var det enklaste sättet att visa er tabellstrukturen
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-06, 01:49 #6
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Varför har du en kolumn som heter thread_id och en som heter thread i samma tabell?

Varför duger inte följande kod?



SELECT (Select Max(date) from forum_posts p where p.thread_id=h.id) AS LatestPost, * FROM forum_heads h ORDER BY 1

Det går även att åstadkomma samma sak med "JOIN" och "Group By" som är något mer effektivt i teorin i alla fall.

Senast redigerad av Conny Westh den 2012-09-06 klockan 01:55
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-06, 02:00 #7
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Om jag tolkar TS rätt så vill han visa trådarna i en lista men så att de är sorterade så att den tråd som har senaste inlägget kommer först i listan.

Då måste man utgå från tabellen forum_threads och joina in ett sorteringsvärde med max(Date) från forums_posts-tabellen så att man får det senaste datumet från forum_posts.

Om det är så så var det bara en dålig kravspecifikation i första inlägget. Annars har jag totalt missuppfattat vad TS vill åstadkomma.

Glömde DESC i mitt förra inlägg:

SELECT (Select Max(date) from forum_posts p where p.thread_id=h.id) AS LatestPost, * FROM forum_heads h ORDER BY 1 DESC

Senast redigerad av Conny Westh den 2012-09-06 klockan 02:07
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-06, 10:00 #8
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
thread_id betyder att det inlägget är kopplat till den tråd. thread betyder att det inlägget är själva trådinlägget.
Citat:
Ursprungligen postat av ConnyWesth Visa inlägg
Varför har du en kolumn som heter thread_id och en som heter thread i samma tabell?

Varför duger inte följande kod?



SELECT (Select Max(date) from forum_posts p where p.thread_id=h.id) AS LatestPost, * FROM forum_heads h ORDER BY 1

Det går även att åstadkomma samma sak med "JOIN" och "Group By" som är något mer effektivt i teorin i alla fall.
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-06, 11:24 #9
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
frecka frecka är inte uppkopplad
Flitig postare
 
Reg.datum: Apr 2011
Inlägg: 410
Conny, vill du förklara vad den där queryn gör? Är inte så van vid att använda subquerys.

Och ORDER BY 1, vad händer om det är en etta?
frecka är inte uppkopplad   Svara med citatSvara med citat
Oläst 2012-09-06, 16:12 #10
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
ORDER BY 1 berättar att det ska sorteras enligt första kolumnen i svaret.
Gör dig själv en tjänst och glöm bort detta direkt igen och skriv alltid ut kolumnnamn istället =)
Danski är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 00:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017