Toon posts:

[MySQL] Veldnaam in 2 tabellen, hoe hernoemen?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het is voor een archief, maar bij de datum krijg ik de timestamp van comments terug, en ik wil die van news terug. (die van comments doe ik in principe in het archief nix mee)

Query:
Select *, COUNT(c.id_news) AS comments
FROM news n
LEFT JOIN comment c on c.id_news = n.id
WHERE MONTH(n.timestamp) = 09
GROUP BY n.id
ORDER BY n.timestamp DESC

in beide tabellen zit timestamp (comments en news)
... en krijg ze allebei terug als timestamp... waar moet ik hermoemen?!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:04

Creepy

Tactical Espionage Splatterer

I.p.v. een * kan je gewoon hard de velden specificeren die je wilt hebben en die prefixen met de tabel alias (n in dit geval).
Let overigens ook even op je group by. MySQL is de enige database die dit slikt. Bij de overige zul je al je velden die niet in een aggregated function (je count in dit geval) zitten moeten opgeven bij de group by.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Als je kijkt naar mysql_fetch_row icm met mysql_fetch_field kun je ook erg veel bereiken, je kunt dan namelijk zien bij welke tabel een veldnaam hoort.

Er is btw een versie van mysql (5.0.11 geloof ik) die veldnamen die in meerdere tabellen die in de FROM staan verkeerd behandelt. Dan vergeet die de tabelnaam. (Kon geen goede testcase voor bugreport hiervoor meer schrijven :'(, kan er dus al wel uit zijn in nieuwere versies).

Moet je denken aan zoiets:
tabel1:
id_tabel1
ipaddr

tabel2:
id_tabel2
id_tabel1
ipaddr

SELECT tabel2.* FROM tabel1 LEFT JOIN tabel2 ON tabel2.id_tabel1 = tabel1.id_tabel1.