Sortera 1 tabell beroende på annan tabell

PHP

11 svar · 243 visningar · startad av Fuel

Medlem sedan okt. 20001 285 inlägg
Trådstart#1

Jag har en massa inlägg i en tabell och kommentarerna i en annan tabell, hur sorterar jag inläggen i den första beroende senaste kommentaren i andra

det inlägg som har den senaste kommentaren ska hamna längst upp..

har testat en massa exempel .. men får det inte riktigt att fungera..

$res2=mysql_query("SELECT * FROM $forum_inlagg ORDER BY senaste datum på kommentar i andra tabellen DESC LIMIT 10");

while ( $rad2 = mysql_fetch_array($res2)) {

Eller ska jag lägga både inlägg och kommentarer i samma tabell ? har sökt på forumet men inte hittat nåt .. eller har jag missat nåt?

Tacksam för hjälp..

Medlem sedan juli 200173 inlägg
#2

Om inlagg ligger i tab1 och kommentar och datum i tab2 kan du skriva: SELECT inlagg,kommentar FROM tab1,tab2 WHERE tab1.id = tab2.id ORDER BY tab2.datum. Detta förutsätter att du har kolumnen id som kopplar ihop raderna i de två tabellerna.

[Redigerat av leifen den 28 jul 2001]

Medlem sedan okt. 20001 285 inlägg
#3

hmm.. nu verkar det arta sig.. men jag får bara de inlägg som har kommentarer att visa sig ..

Medlem sedan juli 200159 inlägg
#4

Det har med att göra att du genom detta kör en så kallad inner join. Testa med antingen left eller right outer join ex:

$strSQL = "SELECT inlagg,kommentar ";
$strSQL .= "FROM tab1 LEFT OUTER JOIN tab2 ";
$strSQL .= "ON (tab1.id = tab2.id)";

Om detta absolut blir helt fel så ändra bara LEFT till right :)

Så borde det hela fungera

Medlem sedan okt. 20001 285 inlägg
#5

Nej.. det skiter sig .. inlägg och kommentarer blandas på 1:a sidan ..

Problem med hur jag ska skriva på

SELECT vad,vad From..

förut var det ju allt (*) från inläggs tabellen .. och från kommentar tabellen ska jag ju bara ha datum ?

Medlem sedan okt. 20001 285 inlägg
#6

eeehh.. ingen som har den minsta clue ?

Jag måste lösa detta snarast.. - h e l p !

Medlem sedan maj 20001 953 inlägg
#7

Passar inte detta bättre i ett forum om SQL?

Medlem sedan juli 200159 inlägg
#8

Nu har ju disskusionen pågått så länge så nu kan den väll inte flytta :) ?

när du använder joins och tabellena har samma kolumnnamn (om jag förstod dig rätt så måste du skilja på dom på något sätt. Ex med AS namn och du måste även defeniera vilken tabell de hör till)

Ex för att jobba vidare på exemplet:

$strSQL = "SELECT tab1.vad AS vadFromTab1, tab2.vad AS vadFromTab2 ";
$strSQL .= "FROM tab1 LEFT OUTER JOIN tab2 ";
$strSQL .= "ON (tab1.id = tab2.id)";

sen när du hämtar data ifrån tabellen skriver du inte det fysiska kolumnnamnet utan då vad du valt att kalla den ex: echo $row["vadFromTab1"];

Klarare ?

Medlem sedan okt. 20001 285 inlägg
#9

Nu har jag bråkat med detta så länge att jag har tappat farten, jag säger bara.. njae.. jag måste vara pucko .. fattar nada .. ska det vara så svårt att sortera en tabell beroende på den andra :-?

Så här är det (exempel):

Jag har en tabell som kallas forum_inlagg där namn, text & datum lagras..

som jag sedan tar fram i en tabell
Inlägg 1
inlägg 2
inlägg 3 osv osv ..

Man kan kommentera alla inlägg om man vill, den datan lagras i en annan tabell: forum_kommentar . där lagras namn, text, datum och siffran till vilket inlägg det tillhör ( kolumnen "till" )

nu vill jag att den första tabellen som jag tar fram på en sida, att sorteras efter de inlägg som har fått de senaste kommentarerna..

Hjälp mig innan jag ramlar omkull..

Jag är VÄLDANS Tacksam för hjälp :)

Medlem sedan juni 20008 205 inlägg
#10

Öhm... en ren gissning:

SELECT i.rubrik, i.id, MAX(k.datum) AS senaste_kommentar
FROM tabell_med_inlägg i, tabell_med_kommentarer k
WHERE
i.id = k.som_kommentar_till
GROUP_BY i.rubrik, i.id
ORDER BY senaste_kommentar
LIMIT 10

Inlägg som inte fått någon kommentar får NULL som senaste_kommentar och hamnar sist (eller, de borde göra det om det här funkar).
\r Det borde de inte alls göra, vid närmare eftertanke. Då får vi köra vänsterjoin.

Medlem sedan okt. 20001 285 inlägg
#11

jag känner mig helt offside.. om du skulle använda mina tabell namn så kanske min hjärna fattar :e

Medlem sedan juni 20008 205 inlägg
#12

Tjatmåns ;)

SELECT fält från forum_inlagg, MAX(k.datum) AS senaste_kommentar
FROM forum_inlagg i, forum_kommentar k
WHERE i.id = k.till
GROUP_BY fält från forum_inlagg
ORDER BY senaste_kommentar
LIMIT 10
329 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
162 ms — deklarationer (db)
0 ms — hämta statistik (cache)
158 ms — hämta tråd, inlägg och bilagor (db)
146 ms — ändringar (db)