Svenska 3D-Tåg - Forum  
 

Om det här är ditt första besök, se till att gå till vår FAQ (finns även länk till FAQ i navigeringsmenyn ovan). Du kan behöva att registrera dig innan du kan posta (finns även en länk till registrering i navigeringsmenyn ovan). För att titta på inlägg, välj det forum som du vill besöka från de som är listade nedan.

Gå tillbaka   Svenska 3D-Tåg - Forum > Övrigt > Off-topic

Stängt ämne
 
Ämnesverktyg Visningsalternativ
Gammal 2003-06-25, 01:16   #1
hp
Senior Member
 
Reg.datum: Aug 2001
Ort: Stockholm, Sweden
Inlägg: 591
Skicka ett meddelande via ICQ till hp Skicka ett meddelande via MSN till hp
Standard 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
Denna sats funkar finfint till dess att man skaffar mer än ett inlägg som är kopplad till samma grupp, då börjar nämligen alla inlägg som är generella duplicera sig så många gånger som det finns gruppanknytna inlägg. Rent SQL mässigt/matematiskt är detta rätt, WHERE satsen utvärderas för varje inlägg vilket kommer resultera i detta.

Någon som kan komma på en rätt och riktig sats för att åstatkomma det jag vill??



HP
Moderator Svenska 3D-Tåg
Regler
hp besöker inte forumet just nu  
Gammal 2003-06-25, 10:35   #2
Mson
Medlem
 
Reg.datum: Nov 2001
Ort: Linköping, Sweden.
Inlägg: 523
Standard

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.tagbilder.com
Mson besöker inte forumet just nu  
Gammal 2003-06-25, 13:45   #3
zerax
Medlem
 
Reg.datum: Oct 2001
Ort: Alvesta, Sweden.
Inlägg: 31
Skicka ett meddelande via ICQ till zerax
Standard

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
zerax besöker inte forumet just nu  
Gammal 2003-06-25, 16:51   #4
hp
Senior Member
 
Reg.datum: Aug 2001
Ort: Stockholm, Sweden
Inlägg: 591
Skicka ett meddelande via ICQ till hp Skicka ett meddelande via MSN till hp
Standard

Tack! Jag har postat på dessa forum!



HP
Moderator Svenska 3D-Tåg
Regler
hp besöker inte forumet just nu  
Gammal 2003-06-26, 06:41   #5
ErikFalken
Senior Member
 
Reg.datum: Aug 2001
Ort: Karlstad, , Sweden.
Inlägg: 241
Skicka ett meddelande via ICQ till ErikFalken
Standard

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.erikfalken.fotosidan.se
ErikFalken besöker inte forumet just nu  
Gammal 2003-06-26, 16:34   #6
hp
Senior Member
 
Reg.datum: Aug 2001
Ort: Stockholm, Sweden
Inlägg: 591
Skicka ett meddelande via ICQ till hp Skicka ett meddelande via MSN till hp
Standard

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...



HP
Moderator Svenska 3D-Tåg
Regler
hp besöker inte forumet just nu  
Gammal 2003-07-07, 17:04   #7
ErikFalken
Senior Member
 
Reg.datum: Aug 2001
Ort: Karlstad, , Sweden.
Inlägg: 241
Skicka ett meddelande via ICQ till ErikFalken
Standard

Citat:
quote:Tidigare skrev hp

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...



HP
Moderator Svenska 3D-Tåg
Regler
Hm, prova:
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.erikfalken.fotosidan.se
ErikFalken besöker inte forumet just nu  
Gammal 2003-07-07, 19:10   #8
hp
Senior Member
 
Reg.datum: Aug 2001
Ort: Stockholm, Sweden
Inlägg: 591
Skicka ett meddelande via ICQ till hp Skicka ett meddelande via MSN till hp
Standard

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...



HP
Moderator Svenska 3D-Tåg
Regler
hp besöker inte forumet just nu  
Gammal 2003-07-07, 20:23   #9
ErikFalken
Senior Member
 
Reg.datum: Aug 2001
Ort: Karlstad, , Sweden.
Inlägg: 241
Skicka ett meddelande via ICQ till ErikFalken
Standard

Citat:
quote:Tidigare skrev hp

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...



HP
Moderator Svenska 3D-Tåg
Regler
Jasså, skumt...
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.erikfalken.fotosidan.se
ErikFalken besöker inte forumet just nu  
Gammal 2003-07-07, 22:03   #10
Daniel R
Medlem
 
Reg.datum: Aug 2001
Ort: , , .
Inlägg: 208
Standard

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
Daniel R besöker inte forumet just nu  
Gammal 2003-07-07, 22:43   #11
ErikFalken
Senior Member
 
Reg.datum: Aug 2001
Ort: Karlstad, , Sweden.
Inlägg: 241
Skicka ett meddelande via ICQ till ErikFalken
Standard

Citat:
quote:Tidigare skrev Daniel R

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
Jag vet inte varför, det finns säkert någon bra förklaring, men om man söker på * brukar det alltid dyka upp dubletter. Söker du på enbart ID så borde det ju inte hända, men jag vet inte. Jag kör alltid med distinct, har funkat hittils i mina enkla SQL frågor iallafall :-)

Erik Falkenström


http://www.erikfalken.fotosidan.se
ErikFalken besöker inte forumet just nu  
Stängt ämne

Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av
Forumhopp

Liknande ämnen
Ämne Startat av Forum Svar Senaste inlägg
Ett stycke ångvagn! (plus fråga) Json 3D-design - Trainz 8 2005-09-18 12:33
Fråga ang. Boggier+Polygoner Carlj 3D-design - Trainz 0 2005-02-01 22:44
Fråga angående S-filer smajlet 3D-design/Ommålningar - MSTS / Open Rails 6 2005-01-30 18:21
Nyfiken fråga? Bengan Trainz - Allmänt om Trainz 4 2004-01-15 21:52
Fråga till STW. RapidHO Trainz - Allmänt om Trainz 3 2002-08-16 22:37



Alla tider är GMT +2. Klockan är nu 21:36.


Powered by vBulletin® Version 3.7.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
© Svenska 3D-Tåg 2001-2009