Just nu i M3-nätverket
Gå till innehåll

sub querys fungerar ej i mySQL - hur göra?


TicoRoman

Rekommendera Poster

"sub querys" fungerar tydligen inte i mySQL (http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html). *ledsen*

 

Jag måste dock använda någon alternativ SQL-sats som gör samma sak, men min hjärna vill inte fungera riktigt. :(

 

SQL-satsen med en sub query skulle se ut så här:

SELECT *

FROM friend_rel AS fr

WHERE
fr.user1 = '1'
AND
fr.approved = '1'
AND
[color="#0000ff"]fr.user1 NOT IN (SELECT fr2.user2 FROM friend_rel AS fr2 WHERE fr2.user2 = fr.user1 AND fr2.user1 = fr.user2 AND fr2.approved = '0')[/color]

ORDER BY fr.user2real

Jag har förenklat SQL-satsen så mycket som möjligt, men jag förstår om den ändå är svår att förstå.

 

Ovanstående ska användas för för en vännerlista i en community. Tanken är att en relation mellan två användare ska ge upphov till TVÅ rader i tabellen friend_rel.

 

Tabellen ser ut så här (även den mkt förenklad):

 

user1 | user2 | approved

------------------------

1 | 2 | 1

2 | 1 | 0

 

user1 och user2 är ID för två olika användare som ingått en relation. approved berättar om att user1 godkänt relation. Båda användarna måste alltså godkänna relationen innan den är så att säga godkänd. (därav två rader i SAMMA TABELL för varje relation).

 

Ovanstående SQL-sats ska plocka fram alla godkända relation där user1 är lika med 1. Kruxet är att relationen måste vara godkänd av båda parter (dvs approved = 1 på båda raderna, annars ska inte relationen tas med).

 

Ufff om någon förstått vad jag menar så blir jätte glad om ni kommer med en lösning. Poäng utlovas.

 

 

Almir - ...

____________________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på MDH, Västerås.-

 

[inlägget ändrat 2003-01-03 09:14:42 av TicoRoman]

Länk till kommentar
Dela på andra webbplatser

Det var som tusan, jag löste det med:

WHERE
(fr.user1 = '1'
AND
fr.approved = '1')
AND
(fr2.user2 = '1' AND fr2.user1 = fr.user2 AND fr2.approved = '1')

 

Så frågan är löst.

 

Typiskt att jag sitter här i snart en timme och verkligen försöker men hjärnan vill inte fungera. Minuten efter att jag sökt hjälp på eForum så kommer jag på hur lätt det egentligen var!

 

Om MODERATORN inte finner denna tråd avändbar för andra, så får han gärna ta bort den helt. ;)

 

Almir - ...

____________________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på MDH, Västerås.-

 

 

[inlägget ändrat 2003-01-03 09:27:24 av TicoRoman]

Länk till kommentar
Dela på andra webbplatser

Skönt det löste sig.

 

Ofta behöver man bara formulera sitt problem på ett strukturerat sätt för att det skall lösa sig.

 

Länk till kommentar
Dela på andra webbplatser

Ofta behöver man bara formulera sitt problem på ett strukturerat sätt för att det skall lösa sig.

Jag vet, men jag tycks aldrig lära mig den läxan.

 

Istället försöker jag envist formulera problemet i huvudet samtidigt som jag försöker komma med en lösning (innan jag egentligen knappt tänkt igenom problemet) vilket som synes inte alltid blir lyckat... :)

 

 

Almir - ...

____________________________________________________________

-Läser Programmet för Informatik med Systemvetenskap på MDH, Västerås.-

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...