webForumDet fria alternativet

SQL-fråga

3 svar · 205 visningar · startad av Addeladde

AddeladdeMedlem sedan jan. 20013 406 inlägg
#1

Hej

Jag får inte till min SQL-fråga. Jag har två tabeller.
Tabell 1 heter sidor och tabell 2 heter meny.

Jag vill skriva en SQL fråga som tar fram data från meny tabellen beroende på om sidan från tabellen sidor stämmer med vissa argument.

SQL-fråga beskrivet i ord:
Ifall meny_sida_id = 0 behöver inga kriterier stämma med sidor tabellen.
Om om sida_datum_start och sida datum_slut inte har varit, paserat eller ska passera Eller ifall publicera = 0. sida_visa får inte vara 2 i något av alternativen.

Det här är koden jag har fått till men med den så radas det upp flera av smma alternativ om meny_sida_id = 0

sqlString = "SELECT meny_sida_id, meny_lank, meny_namn, sida_datum_start, sida_datum_slut, sida_visa, sida_publicering " &_
  "FROM meny, sidor " &_
  "WHERE meny_sida_id = sida_id " &_
  " Or meny_sida_id = "&nolla&" " &_
  "ORDER BY meny_namn "

SET menyRS = Con.Execute( sqlString )

WHILE NOT menyRS.EOF 
	
	
    IF menyRS("sida_datum_start") < date AND(menyRS("sida_datum_slut") > date) OR(menyRS("sida_publicering") = "1") OR(menyRS("meny_sida_id") = "0") THEN
	  IF menyRS( "sida_visa") <> 2 THEN
	    response.write "<span class=""meny"">>>&nbsp;"&menyRS("meny_namn")&" </span><br>"
	  END IF
	END IF

	
menyRS.MoveNext
WEND
AddeladdeMedlem sedan jan. 20013 406 inlägg
#2

Annat kodförsök

[kod]
sqlString = "SELECT meny_lank, meny_namn " &_
"FROM meny, sidor " &_
"WHERE meny_sida_id = sida_id " &_
<-- detta är en egen -->
"AND sida_datum_start < #"&date&"# " &_
"AND sida_datum_slut > #"&date&"# " &_
"AND sida_visa =1 "&_
"OR sida_publicering =0 "&_
<-- här slutar den egna frågan -->

<--- den här är antigen för "meny_sida_id = sida_id " -->
"OR meny_sida_id =0 "&_

" ORDER BY meny_namn "
SET menyRS = Con.Execute( sqlString )

LarsGMedlem sedan dec. 200012 464 inlägg
#3

Gör en union

sqlString = "SELECT meny_sida_id, meny_lank, meny_namn," &_ 
"sida_datum_start, sida_datum_slut, sida_visa, sida_publicering " &_
  "FROM meny, sidor " &_
  "WHERE meny_sida_id = sida_id " &_
"union " & _
"SELECT meny_sida_id, meny_lank, meny_namn, " &_ 
"null,null,null,null " &_
  "FROM meny " &_
  "WHERE meny_sida_id = "&nolla&" " &_
  "ORDER BY meny_namn "

(Att skriva null direkt i select-listan enligt ovanstående är inte korrekt sql men de flesta tillåter det. Det skall egentligen vara
cast(null as date) men den konstruktionen är det färre som tillåter.)

AddeladdeMedlem sedan jan. 20013 406 inlägg
#4

Tack lars nu har du sparat mycket tid åt mig. Nästan så jag vill skicka min adress så du kan fakturera :bire

Det fungera nu precis som det ska! Här är koden:

sqlString = "SELECT meny_sida_id, meny_lank, meny_namn," &_ 
"sida_datum_start, sida_datum_slut, sida_visa, sida_publicering " &_
  "FROM meny, sidor " &_
  "WHERE meny_sida_id = sida_id " &_
  "AND sida_visa =1 " &_
"union " & _
"SELECT meny_sida_id, meny_lank, meny_namn, " &_ 
"null,null,null,null " &_
  "FROM meny " &_
  "WHERE meny_sida_id =0 " &_
  "ORDER BY meny_namn "

SET menyRS = Con.Execute( sqlString )

WHILE NOT menyRS.EOF 

    IF menyRS("sida_datum_start") <= date AND(menyRS("sida_datum_slut") >= date) OR(menyRS("sida_publicering") = "1") OR(menyRS("meny_sida_id") = "0") THEN
	    response.write "<span class=""meny"">>>&nbsp;"&menyRS("meny_namn")&" </span><br>"
	END IF

	
menyRS.MoveNext
WEND

Nu är min fråga går det att få in den här raden i SQL-frågan och om det gör det, är det bättre?

    IF menyRS("sida_datum_start") <= date AND(menyRS("sida_datum_slut") >= date) OR(menyRS("sida_publicering") = "1") OR(menyRS("meny_sida_id") = "0") THEN
129 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)