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