JOIN laatste record
Ik zit nu al 3 uur te pielen maar krijg het niet voor elkaar. Ik heb al talloze voorbeelden geprobeerd maar ik kom nergens mee uit de voeten. Kan iemand me helpen?
Ik heb twee tabellen (versimpeld weergegeven):
blog
blog_id
blog_name
blog_published
aliasses
alias_id
alias_name
alias_blog (verwijzing naar blog_id)
Het is een 1 op veel relatie: één blogitem kan meerdere aliassen hebben, maar een alias kan maar van één blogitem zijn.
Je gaat hem misschien al raden. Ik wil een resultset van alle blogitems met daarin de laatst toegevoegde alias. Uiteraard zijn de %_id auto-increment.
Ik heb onder andere geprobeerd:
Quote:
SELECT
*
FROM
blog
JOIN
aliasses
ON
blog_id = alias_blog
GROUP BY
blog_id
ORDER BY
blog_published ASC
*
FROM
blog
JOIN
aliasses
ON
blog_id = alias_blog
GROUP BY
blog_id
ORDER BY
blog_published ASC
Dit werkt prima, alleen heb ik het idee dat er een random alias gepakt wordt die bij het blogitem hoort en niet de nieuwste (laatste).
Gewijzigd op 06/12/2013 17:44:17 door Rogier Burton
Wat jij wilt is DESC om de nieuwste getoond te krijgen. ( optioneel zou je de ASC en DESC helemaal weg kunnen laten dan zal hij de default waarde gebruiken namelijk: DESCending)
Reshad F op 06/12/2013 16:28:17:
De ASC die je op het laatst hebt geplaatst staat voor ASCENDING en kort samengevat betekent dit dat de oudste als eerst getoond wordt.
Wat jij wilt is DESC om de nieuwste getoond te krijgen. ( optioneel zou je de ASC en DESC helemaal weg kunnen laten dan zal hij de default waarde gebruiken namelijk: DESCending)
Wat jij wilt is DESC om de nieuwste getoond te krijgen. ( optioneel zou je de ASC en DESC helemaal weg kunnen laten dan zal hij de default waarde gebruiken namelijk: DESCending)
Bedankt voor je reactie.
Ik wil het laatste geplaatste blogitem onderaan hebben staan, vandaar ORDER BY blog_published ASC.
Echter dit heeft géén invloed op hoe de aliasses worden gesorteerd...
Gewijzigd op 06/12/2013 16:32:19 door Rogier Burton
Je komt hier niet onder een subquery uit.
Ger van Steenderen op 06/12/2013 17:21:43:
Je wilt geen selfjoins of subquries maar je gebruikt group by wel helemaal verkeerd.
Je komt hier niet onder een subquery uit.
Je komt hier niet onder een subquery uit.
Haha, ik lees nu dat die zin op twee manieren gelezen kan worden. Ik geef wél de voorkeur aan selfjoins of subqueries, maar het maakt me niet uit welke van die twee. Zo bedoelde ik dat :)
http://www.phphulp.nl/php/forum/topic/mysql-query-voor-de-laatste-entries-per-naam/93022/
Ik zit op iPad dus het is een beetje lastig om dan de gehele query in te gaan typen. Maar in dat topic staat ongeveer hetzelfde
Ik zit op iPad dus het is een beetje lastig om dan de gehele query in te gaan typen. Maar in dat topic staat ongeveer hetzelfde
eerst maak je een query die van elke blog de laatste alias bepaalt, maar om "laatste" te bepalen, heb je nog een kolom met een tijdstip nodig in die tabel
Ivo P op 06/12/2013 17:54:29:
eerst maak je een query die van elke blog de laatste alias bepaalt, maar om "laatste" te bepalen, heb je nog een kolom met een tijdstip nodig in die tabel
Of een AI id
Dit krijg dan als subquery en dan ga je de andere tabellen joinen een beetje een combinatie van een subquery en een selfjoin.
Ger van Steenderen op 06/12/2013 18:04:09:
Select blogid, max(alias_id) alias_id FROM aliasses group by blogid.
Dit krijg dan als subquery en dan ga je de andere tabellen joinen een beetje een combinatie van een subquery en een selfjoin.
Dit krijg dan als subquery en dan ga je de andere tabellen joinen een beetje een combinatie van een subquery en een selfjoin.
Je hebt me een duw in de juiste richting gegeven. De oplossing is wat complexer dan vermeld maar het antwoord van Ger was de juiste. Bedankt!