webForumDet fria alternativet

Ta ut ur två tabeller

9 svar · 245 visningar · startad av learn

learnMedlem sedan jan. 20051 130 inlägg
#1

Jag har två tabeller i en MySQL-databas. Nu vill jag plocka ut det senaste ur tabellerna. Det ska endast hämtas 1 post - den senaste! Hur gör jag detta i PHP??

Tabell1
----------
tabell1_ID
text
year
month
day

Tabell2
----------
tabell2_ID
text
year
month
day

aasahMedlem sedan mars 20034 471 inlägg
#2

Läs här och byt ut 3 mot 1.... :OO

LarsGMedlem sedan dec. 200012 464 inlägg
#3
select id,text,year,month,day
from 
((select tabell1_id id,text,year,month,day
   from tabell1
  order by year desc, month desc, day desc
  limit 1)
union all
(select tabell2_id,text,year,month,day
   from tabell2 
  order by year desc, month desc, day desc
  limit 1)) dt
order by year desc, month desc, day desc
  limit 1

Varför har du två tabeller med identisk struktur?

learnMedlem sedan jan. 20051 130 inlägg
#4

Får det inte att fungera.. Antar at jag gör ngt slarvfel när jag skriver om det till riktig PHP. Kan du inte visa hur det ska se ut..?? Tack

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Det är enklare om du postar det du har försökt med och även postar felmeddelande. Har du testat frågan separat?

learnMedlem sedan jan. 20051 130 inlägg
#6

Så här har jag skrivit (vill ta ut de 5 senaste):

$query = mysql_query("
select id,rubrik,year,month,day from 
((select tbl1ID id,rubrik,year,month,day,time FROM tbl1 ORDER BY tbl1ID DESC LIMIT 5)
union all
(select tbl2ID id,rubrik,year,month,day,time FROM tbl2 ORDER BY tbl2ID DESC LIMIT 5)) 
dt order by id desc limit 5
");

$result = mysql_fetch_array($query);

Felmeddelande:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in...

LarsGMedlem sedan dec. 200012 464 inlägg
#7
 $query = mysql_query("
select id,rubrik,year,month,day from
((select tbl1ID id,rubrik,year,month,day,time FROM tbl1 ORDER BY tbl1ID DESC LIMIT 5)
union all
(select tbl2ID id,rubrik,year,month,day,time FROM tbl2 ORDER BY tbl2ID DESC LIMIT 5))
dt order by id desc limit 5
") or die (mysql_error());

Vad blir det för resultat?

Frågan fungerar t.ex. inte i äldre versioner av Mysql.

learnMedlem sedan jan. 20051 130 inlägg
#8

Så här:

Every derived table must have its own alias

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Så här då?

(select tbl1ID id,rubrik,year,month,day,time FROM tbl1
 ORDER BY tbl1ID DESC LIMIT 5)
union all
(select tbl2ID id,rubrik,year,month,day,time FROM tbl2
 ORDER BY tbl2ID DESC LIMIT 5)
 order by id desc limit 5

Jag skyller på att Mysql har klantat sig med avseende på syntaxen för union och derived tables.

learnMedlem sedan jan. 20051 130 inlägg
#10

Verkar fungera bra, tack!

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)