webForumDet fria alternativet

Sortera 1 tabell beroende på annan tabell

PHP

11 svar · 238 visningar · startad av Fuel

Medlem sedan okt. 20001 285 inlägg
Frågan#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..

------------------
" The code is out there "

[Redigerat av Fuel den 28 jul 2001]

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 ..

------------------
" The code is out there "

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 ?

------------------
" The code is out there "

[Redigerat av Fuel den 28 jul 2001]

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 !

------------------
" The code is out there "

Medlem sedan maj 20001 953 inlägg
#7

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

------------------
<A HREF="mailto:chavez@post.netlink.se">Mvh Chavez
</A> UIN: 73975020

Första PHP portalen på svenska!!

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 ?

------------------
Kodarkivet
----------------------
http://www.quickmess.com/kodarkivet

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 :)

------------------
" The code is out there "

[Redigerat av Fuel den 23 aug 2001]

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.

------------------
The mud can make you prisoner, the plains can make you dry,
the snow can burn your eye but only people make you cry...

[Redigerat av spango den 23 aug 2001]

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

------------------
" The code is out there "

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

------------------
The mud can make you prisoner, the plains can make you dry,
the snow can burn your eye but only people make you cry...

[Redigerat av spango den 23 aug 2001]

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)