webForumDet fria alternativet

Ta ut ur två tabeller

Databaser & SQL

9 svar · 247 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#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

Medlem sedan mars 20034 471 inlägg
#2

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

Medlem 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?

Medlem 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

Medlem 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?

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

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

Medlem sedan jan. 20051 130 inlägg
#8

Så här:

Every derived table must have its own alias

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

Medlem sedan jan. 20051 130 inlägg
#10

Verkar fungera bra, tack!

287 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
155 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)