Visa ett inlägg
Oläst 2009-01-11, 14:25 #10
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Citat:
Originally posted by Magnus_A@Jan 11 2009, 13:34
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.
... och så fungerar det likadant oavsett vilken applikation som anropar SQL-koden.

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);
INSERT INTO tblInvoice VALUES(3, 50);
CREATE VIEW vInvoice AS SELECT qty, price, qty*price AS value FROM tblInvoice;
SELECT * FROM vInvoice;


+------+-------+-------+
| *qty* | *price | value |
+------+-------+-------+
| * *3 * | * *50 *| * 150 *|
+------+-------+-------+


Kod:
CREATE VIEW vPosts AS

SELECT `posts`.id, `posts`.title, `posts`.text, `posts`.tags, `posts`.user_id,DATE_FORMAT(`posts`.date,'%e %b %Y %H:%i') AS newdate, 
(SELECT `users`.uname FROM `users` WHERE `posts`.user_id = `users`.user_id) AS uname

FROM `posts`

WHERE MONTH(`date`)=MONTH(NOW()) 

ORDER BY `date` DESC LIMIT 5;

För att anropa denna vy skriver man bara:

Kod:
SELECT * FROM vPosts;
Conny Westh är inte uppkopplad   Svara med citatSvara med citat