/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Join problem
Fra : Jesper Nielsen


Dato : 24-02-03 13:25

Hej gruppe

Jeg har lavet følgende SQL sætning:

SELECT e.ID AS ElementID, e.ElementName AS ElementName,
e.Status AS EStatus, p.ID AS PropertyID,
p.StyleSheetElementId AS PEID, p.PropertyName AS PName,
p.PropertyValue AS PValue, p.Status AS PStatus
FROM Design_StyleSheets_Elements e INNER JOIN
Design_StyleSheets_Property p ON
e.ID = p.StyleSheetElementId
WHERE e.StyleSheetId = 1 AND e.Status = 100 AND
p.Status = 100
ORDER BY ElementName;

Den giver, efter at være kørt gennem min function i ASP, følgende HTML:

<style type="text/css">
BODY {
font-family: verdana,sans-serif;
}
BODY {
font-size: 12px;
}
BODY {
color: #000000;
}
</style>

hvilket ikke er helt optimalt. Resultatet skulle jo gerne være:

<style type="text/css">
BODY {
font-family: verdana,sans-serif;
font-size: 12px;
color: #000000;
}
</style>

Jeg kan ikke lige komme på, hvad det er i min SQL sætning jeg skal ændre for
at få dette resultat. Er der nogen her, som kan hjælpe mig?

På forhånd tak.

--
Mvh. Jesper



 
 
Jesper Nielsen (24-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 24-02-03 13:29

Skulle måske lige sige, at jeg anvender MSSQL, og tabelstrukturene er som
følger:

--- Design_StyleSheets_List ---
CREATE TABLE dbo.Design_StyleSheets_List
(
ID int NOT NULL IDENTITY (1, 1),
StyleName varchar(50) NOT NULL,
Status smallint NOT NULL
) ON [PRIMARY]

INSERT INTO Design_StyleSheets_List
(StyleName, Status)
VALUES ('Default Style Sheet', 100)

--- Design_StyleSheets_Elements ---
CREATE TABLE dbo.Design_StyleSheets_Elements
   (
   ID int NOT NULL IDENTITY (1, 1),
   StyleSheetId int NOT NULL,
   ElementName varchar(100) NOT NULL,
   Status smallint NOT NULL
   ) ON [PRIMARY]

INSERT INTO Design_StyleSheets_Elements
(StyleSheetId, ElementName, Status)
VALUES (1, 'BODY', 100)

--- Design_StyleSheets_Property ---
CREATE TABLE dbo.Design_StyleSheets_Property
(
ID int NOT NULL IDENTITY (1, 1),
StyleSheetElementId int NOT NULL,
PropertyName varchar(200) NOT NULL,
PropertyValue varchar(200) NOT NULL,
Status smallint NOT NULL
) ON [PRIMARY]

INSERT INTO Design_StyleSheets_Property
(StyleSheetElementId, PropertyName, PropertyValue, Status)
VALUES (1, 'font-family', 'verdana,sans-serif', 100)

INSERT INTO Design_StyleSheets_Property
(StyleSheetElementId, PropertyName, PropertyValue, Status)
VALUES (1, 'font-size', '12px', 100)

INSERT INTO Design_StyleSheets_Property
(StyleSheetElementId, PropertyName, PropertyValue, Status)
VALUES (1, 'color', '#000000', 100)

--
Mvh. Jesper



Jesper Nielsen (25-02-2003)
Kommentar
Fra : Jesper Nielsen


Dato : 25-02-03 18:15

> Jeg har lavet følgende SQL sætning:
>
<snip en masse>

Problemet lå åbenbart ikke i SQL'en, men skulle findes i ASP'en.
I fald andre skulle få brug for noget lignende, så endte koden med at se
således ud:

<%
Function GenerateStyleSheet(ByVal StyleId)
Dim StyleQry, StyleSql
Dim LastElement, CurrentElement
LastElement = ""

StyleSQL = "SELECT e.ID AS ElementID, e.ElementName AS ElementName,
e.Status AS EStatus, " & _
"p.ID AS PropertyID, p.StyleSheetElementId AS PEID, " & _
"p.PropertyName AS PName, p.PropertyValue AS PValue, p.Status AS PStatus
FROM " & _
"Design_StyleSheets_Elements e INNER JOIN Design_StyleSheets_Property p
ON " & _
"e.ID = p.StyleSheetElementId WHERE e.StyleSheetId = " & StyleId & " " &
_
"AND e.Status = 100 AND p.Status = 100 ORDER BY ElementName;"
Set StyleQry = Conn.Execute(StyleSQL)

If StyleQry.Eof = False Then
Response.Write(vbCrLf & "<style type=""text/css"">" & vbCrLf)
Do While StyleQry.Eof = False
CurrentElement = StyleQry("ElementName")

If CurrentElement <> LastElement Then
If LastElement <> "" Then
Response.Write("}" & vbCrLf)
End If
Response.Write((CurrentElement) & " {" & vbCrLf)
End If

Response.Write(" " & StyleQry("PName") & ": " & StyleQry("PValue") &
";" & vbCrLf)

LastElement = CurrentElement
StyleQry.MoveNext
Loop
Response.Write("}" & vbCrLf & "</style>" & vbCrLf)
End If
End Function
%>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste