Avatar billede MrLund Nybegynder
07. marts 2010 - 00:46 Der er 7 kommentarer og
1 løsning

SQL sætning

Jeg skal have lavet mig en SQL sætning som tager højde for 3 forskellige ting

Jeg skal hente indlæg til et debatforum

Min tabel

noesis_team_debat
--------------------
TEAMID - PRIVAT - LEVEL


Hvis PRIVAT er TRUE, skal jeg tjekke nogle data i en anden tabel.
Om den givne bruger med session("id") matcher teamid i tabellen

noses_teammedlemmer
--------------------
ID - TEAMID - BRUGERID

hvis PRIVAT er FALSE så skal der ikke laves det tjek

Nogen der kan hjælpe mig på vej med det? :)
Avatar billede platik Nybegynder
07. marts 2010 - 01:37 #1
En Stored procedure kunne ligne noget alla:

CREATE PROCEDURE SP_ProcedureNavn
(
@sessionID int
)
AS
SELECT * FROM noesis_team_debat WHERE PRIVAT = 0
UNION
SELECT * FROM noesis_team_debat, noses_teammedlemmer WHERE PRIVAT = 1 AND BRUGERID = @sessionID

i stedet for * skal du i begge skrive hvad det er du vil have ud, antal af colomns skal mache ved union.
Avatar billede platik Nybegynder
07. marts 2010 - 01:44 #2
Hov skal nok være:

SELECT * FROM noesis_team_debat WHERE PRIVAT = 0
UNION
SELECT * FROM noesis_team_debat, noses_teammedlemmer WHERE PRIVAT = 1 AND TEAMID = session("id") AND noesis_team_debat.TEAMID = noses_teammedlemmer.TEAMID

De 2 tabeller skal jo også lige bindes sammen, og var teamid der skulle være sessionID :-).
Avatar billede MrLund Nybegynder
07. marts 2010 - 09:44 #3
Jeg har fået bikset følgende sammen, ud fra dit forslag.


SELECT * FROM noesis_team_debat WHERE PRIVAT = 0 and teamid = " & rsTeam("id") & " and land = '" & strLand & "'  UNION SELECT * FROM noesis_team_debat, noesis_teammedlemmer WHERE PRIVAT = 1 AND noesis_teammedlemmer.teamid = " & rsTeam("id") & " and noesis_teammedlemmer.brugernavn = '" & session("brugernavn") & "' and noesis_team_debat.teamid = noesis_teammedlemmer.teamid


der får jeg fejlen



Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[MySQL][ODBC 5.1 Driver][mysqld-5.1.35]The used SELECT statements have a different number of columns


har jeg misforstået noget? :P
Avatar billede MrLund Nybegynder
07. marts 2010 - 10:08 #4
Aha nu tror jeg at jeg ved hvorfor.
Jeg har eks 5 kolonner at udskrive fra noesis_team_debat . men har kun 2 kolonner fra noesis_teammedlemmer - så kan jeg vel ikke bruge UNION, eller?
Avatar billede platik Nybegynder
07. marts 2010 - 13:33 #5
Korrekt, derfor du skulle erstatte * i begge select statements med de kolonner du gerne vil have vist. :-)
Avatar billede platik Nybegynder
07. marts 2010 - 13:37 #6
ex mere.

SELECT TEAMID, PRIVAT, LEVEL
FROM noesis_team_debat WHERE PRIVAT = 0 and teamid = " & rsTeam("id") & " and land = '" & strLand & "'

UNION

SELECT TEAMID, PRIVAT, LEVEL
FROM noesis_team_debat, noesis_teammedlemmer WHERE PRIVAT = 1 AND noesis_teammedlemmer.teamid = " & rsTeam("id") & " and noesis_teammedlemmer.brugernavn = '" & session("brugernavn") & "' and noesis_team_debat.teamid = noesis_teammedlemmer.teamid

Går ud fra du skal bruge de samme ting i begge tilfælde. En anden mulighed er at vælge alt i begge tabeller på begge if.

Ex
SELECT * FROM noesis_team_debat, noesis_teammedlemmer WHERE PRIVAT = 0 and teamid = " & rsTeam("id") & " and land = '" & strLand & "' AND noesis_team_debat.teamid = noesis_teammedlemmer.teamid

UNION

SELECT * FROM noesis_team_debat, noesis_teammedlemmer WHERE PRIVAT = 1 AND noesis_teammedlemmer.teamid = " & rsTeam("id") & " and noesis_teammedlemmer.brugernavn = '" & session("brugernavn") & "' and noesis_team_debat.teamid = noesis_teammedlemmer.teamid
Avatar billede MrLund Nybegynder
12. juli 2010 - 22:05 #7
tak for det, kast et svar afsted :)
Avatar billede platik Nybegynder
13. juli 2010 - 12:25 #8
Svar :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows