![]() |
Avancerad SQL fråga
Tjena!
Kanske fel forum att skriva i men jag kastar ut frågan ändå, någon kanske kan lösningen... Om Du inte kan något om databaser, ta dig inte äns tid att försöka förstå detta ;) Jag håller på att lösa ett SQL problem som var svårare att lösa än jag trodde. Databasen ser ut som följer - groups, innehåller information om olika grupper - news, innehåller nyhetsinlägg, här finns en flagga som heter general, om den är satt så skall inlägget visas oavsatt vilken grupp man är inloggad i. - groups_news, är en länklista mellan groupid och newsid Jag skall nu göra en lista på alla nyhetsinlägg som är relevanta för den inloggade personenen, som har valt vilken grupp han är med i, dess utom om ingen grupp är vald skall bara de generella inläggen visas. Denna lista skall vara sorterad DESC efter changedate som finns i tabellen news. Om vi struntar i JOINS och CROSS JOINS och kör den gammla hedliga vägen, jag har testat JOINS, det funkar precis lika dant, så borde en sådan sats med inloggning i grupp med id 1 se ut något som Kod:
SELECT news.* FROM news, group_news WHERE news.general = 1 OR group_news.newsid = news.newsid AND group_news.groupid = 1 ORDER BY news.changedate DESC Någon som kan komma på en rätt och riktig sats för att åstatkomma det jag vill?? http://www.e-buzz.net/forum/attachments2/1419101949.gif HP Moderator Svenska 3D-Tåg Regler |
Posta detta i Sweclockers oxå så har du 2 ställen att kolla på:
http://forum.sweclockers.com/ Posta under: Programmering - Webdesign - Grafisk design Där har jag sett några som postat liknande fraser och fått "scriptet" korrigerat! MvH. Mson http://www.e-buzz.net/forum/attachments/5093193218.jpg http://www.tagbilder.com |
http://www.phpportalen.net är ett mycket bättre ställe att fråga om SQL frågor. Sweclockers är visserligen bra men phpportalen i detta fallet är mycket bättre.
--------------- zerax@nordictech.com http://www.zerax.mine.nu http://www.nordictech.com |
Tack! Jag har postat på dessa forum!
http://www.e-buzz.net/forum/attachments2/1419101949.gif HP Moderator Svenska 3D-Tåg Regler |
SELECT DISTINCT news.* FROM news, group_news WHERE news.general = 1 OR group_news.newsid = news.newsid AND group_news.groupid = 1 ORDER BY news.changedate DESC
borde fungera! När du söker i en SQL databas är det nästan undantagslöst nödvändigt att använda SELECT DISTINCT Erik Falkenström http://www.e-buzz.net/forum/attachments/9910223735.jpg http://www.erikfalken.fotosidan.se |
Blir felmeddelande, jag kan använda den för att välja alla id nummer och sedan med en IN sats plocka upp det men det blir en delbar opperation...
http://www.e-buzz.net/forum/attachments2/1419101949.gif HP Moderator Svenska 3D-Tåg Regler |
Citat:
SELECT DISTINCT * FROM news WHERE news.general = 1 OR group_news.newsid = news.newsid AND group_news.groupid = 1 ORDER BY news.changedate DESC/erik Erik Falkenström http://www.e-buzz.net/forum/attachments/9910223735.jpg http://www.erikfalken.fotosidan.se |
Nix, resulterar i fel, anledningen är att destinct ändast går att använda på id nummer, med andra ord, textfältet title och message går inte...
Jag fick hjälp på ett annat forum, den rätta satsen är SELECT * FROM news WHERE news.general = 1 OR news.newsid = ( SELECT newsid FROM group_news WHERE group_news.newsid = news.newsid AND group_news.groupid = 1 ) ORDER BY news.changedate DESC Med andra ord en Select sats i Selectsatsen... Så är det... http://www.e-buzz.net/forum/attachments2/1419101949.gif HP Moderator Svenska 3D-Tåg Regler |
Citat:
Jag brukar alltid använda SELECT DISTINCT när jag söker, oavsett om det gäller ID fält (sätter oftast den till integer 10 bytes) eller textfält, char eller annat t.ex. datum. Kör förresten MySQL, vad använder du, kan det var ngt skumt där, om du kör MS Access som använder JetSQL? Jag har en annan idé, om du har lust så testa gärna, den kan fungera, eller så gör den inte det :-) SELECT DISTINCT * FROM news WHERE news.general = 1 OR (group_news.newsid = news.newsid AND group_news.groupid = 1) ORDER BY news.changedate DESC Erik Falkenström http://www.e-buzz.net/forum/attachments/9910223735.jpg http://www.erikfalken.fotosidan.se |
Lite OT: Vad har DISTINCT för funktion när man kör med SELECT *[?]
DISTINCT ska ju sortera bort dubletter, och några dubletter ska ju inte kunna finnas om man hämtar alla poster. Speciellt inte på ID-fältet som Erik beskriver? // Daniel |
Citat:
Erik Falkenström http://www.e-buzz.net/forum/attachments/9910223735.jpg http://www.erikfalken.fotosidan.se |
Alla tider är GMT +2. Klockan är nu 23:50. |
Powered by vBulletin® Version 3.7.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
© Svenska 3D-Tåg 2001-2009