![]() |
I ett bloggsystem jag håller på med just nu så hämtar jag inläggen till startsidan med:
Kod:
SELECT `posts`.id,`posts`.title,`posts`.text,`posts`.tags,`posts`.user_id,DATE_FORMAT(`posts`.date,'%e %b %Y %H:%i') AS newdate FROM `posts` WHERE MONTH(`date`)=MONTH(NOW()) ORDER BY `date` DESC LIMIT 5; |
Visst går det, det är så här enkelt:
Kod:
SELECT `posts`.id, `posts`.title, `posts`.text, `posts`.tags, `posts`.user_id,DATE_FORMAT(`posts`.date,'%e %b %Y %H:%i') AS newdate, `users`.uname |
Tack så hemskt mycket! Funkar perfekt!
|
Citat:
Ett annat lite skojigt sätt att nå samma resultat är att använda en subselect: Kod:
SELECT `posts`.id, `posts`.title, `posts`.text, `posts`.tags, `posts`.user_id,DATE_FORMAT(`posts`.date,'%e %b %Y %H:%i') AS newdate, |
Conny du kanske skall berätta vilken form av join du gör, när du nämner "join",
Det finns flera olika join ( http://en.wikipedia.org/wiki/Join_(SQL) ) Den form av join du har beskrivit ovan är "INNER JOIN" |
Citat:
I just detta fall så var det en av de enklaste JOINarna man kan jobba med när man kopplar samman två tabeller med primärnyckel i users-tabellen och främmande nyckeln i posts-tabellen. Jag gissade dessutom på att det fanns en kolumn i users-tabellen som heter user_id vilket visade sig stämma. Det var inte givet i förutsättningarna. Man får ta det här med JOIN steg för steg för man kan ju även använda nyckelorden "INNER JOIN", "OUTER JOIN" resp "JOIN", men det är mycket databasspecifikt hur detta serut i verkligheten och jag hade inte min MySQL igång så jag kunde testa ut en helt optimal lösning. När crazzy upptäcker vilka fantastiska lösningar man kan göra med SQL hoppas jag han återkommer med fler frågor, det är kul att knäcka problem med SQL och DDL. |
Nja, primärnyckeln i `users`heter iofs `id` men ändå. SQL är riktigt skoj när man sitter och försöker pressa in så mycket jobb som möjligt i SQL och tvinga databasen att göra allt drygt. Datumformatering, sökning, strängmatchning, sortering, räkning.....
|
Citat:
|
Bra att tänka på när man designar databaser är att göra så mycket jobb som möjligt med beräkningar, urval, sortering mm i mysql istället för i sidscriptet. Mycket snabbare och oftast lättare att koda.
|
Citat:
Ett annat tips är att skapa vyer med komplicerat SQL-kod då minskar man risken att man kodar fel i SQL-satsen på sidscriptet. Detta är synnerligen bra om man har komplex SQL eller om man anropar den på flera olika ställen i scriptkod. Syntax: http://dev.mysql.com/doc/refman/5.0/en/cre...reate-view.html Kod:
CREATE TABLE tblInvoice (qty INT, price INT); Kod:
CREATE VIEW vPosts AS För att anropa denna vy skriver man bara: Kod:
SELECT * FROM vPosts; |
Alla tider är GMT +2. Klockan är nu 18:54. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson