Jag har ett problem som jag inte fattar. Om du använder distinct så måste den klippa ned texterna för att kunna hantera dem. Ta bort distinct. Hej Tack båda! Jag ska testa. När jag kommer tillbaka från Mallorca - om 2 veckor... :) rs.Open SQL, conn Okej - men kan jag inte använda DISTINCT isåfall? Jag använde bara * först, men då fick jag upp flera träffar på samma post. Jag gör 3 sökningar i filen. De 2 första funkar bra med * , där jag har 2 tabeller att göra inner join på, men inte den tredje. Där har jag 3 tabeller som relaterar till varandra - TechnologyTopics, TechTopicCategories och SubTechCategories. Så här ser min SQL-sats ut där... En sak som jag funderar på är om du inte skall ha paranteser som nedan. Jösses!! Vilken tur att du påpekade att det var nåt konstigt med id:na jag jämförde... Det visade sig att jag glömt lägga in id:t för subkategorierna som en sekundärnyckel i topicstabellen... *gulp* Därav problemet med flera träffar för samma post...Hämtar inte hela texten från databasen...
På ett ställe i sajten jag gör kan jag välja bland länkar (namn på företag) och får då upp alla inlagda nyheter från en av mina tabeller i databasen. Om jag däremot gör en "fritextsökning" och skriver in företagets namn så letar jag igenom flera olika tabeller - och får upp rätt poster men från fältet "text" som innehåller en längre text, så klipps strängen av efter 255 tecken. Texterna är inlagda som memo i databasen. Varför visas hela texten när jag söker på ena stället och bara en del av texten när jag söker igenom flera tabeller?
På stället där hela texten skrivs ut ser koden ut såhär:
<%
'Gets all news about the requested company
SQL = "SELECT * FROM Companies,News WHERE Companies.compId = News.compId AND Companies.compName ='" & comp & "' ORDER BY date DESC"
rs.Open SQL, conn
Do While Not rs.EOF
%>
<tr>
<td colspan="3"><b><%=rs("date")%>, <%=rs("compName")%></b>
<br><b><%=rs("title")%></b>
<br><%=rs("text")%>
</td>
</tr>
<tr height="40">
<td width="400">
<%
'If there is a link to the news
If Not rs("link") = "" Then
%>
" target="info" class="link">link..
<%
End If
If Not rs("file") = "" Then
%>
" target="info" class="link">file..
<%
End If
%>
</td>
<td align="right">
<input type="button" value="Delete" class="smalltxt" onClick="return remove(<%=rs("newsId")%>)">
</td>
<td align="right">
<input type="button" value="Edit" class="smalltxt" onClick="edit(<%=rs("newsId")%>)">
</td>
</tr>
<tr>
<td colspan="3">
<hr>
</td>
</tr>
rs.MoveNext
Loop
End If
rs.Close
Och på stället där inte hela texten tas med ser det ut såhär:
<%
'Checks for hits among news topics
SQL1 = "SELECT DISTINCT News.newsId, News.title, News.text, News.date, News.link, News.file "
SQL1 = SQL1 + "FROM Companies INNER JOIN News ON Companies.compId=News.compId "
SQL1 = SQL1 + "WHERE Companies.compName ='" & word & "' " 'Companyname = word
SQL1 = SQL1 + "OR News.title LIKE '% " & word & "%' " 'phrase in beginning of word in title
SQL1 = SQL1 + "OR News.text LIKE '% " & word & "%' " 'phrase in beginning of word in text
SQL1 = SQL1 + "ORDER by News.date DESC"
rs.Open SQL1,conn
'If there are news hits
If Not rs.EOF Then
%>
<tr height="30">
<td class="heading">Company news</td>
</tr>
<%
Do While Not rs.EOF
%>
<tr>
<td><b><%=rs("date")%></b>
<br><b><%=rs("title")%></b>
<br><%=rs("text")%>
</td>
</tr>
<tr height="40">
<td width="400">
<%
'If there is a link to the news
If Not rs("link") = "" Then
%>
" target="info" class="link">link..
<%
End If
If Not rs("file") = "" Then
%>
" target="info" class="link">file..
<%
End If
%>
</td>
</tr>
<tr>
<td>
<hr>
</td>
</tr>
<%
rs.MoveNext
Loop
End If
rs.Close
%>
Sv: Hämtar inte hela texten från databasen...
Sv: Hämtar inte hela texten från databasen...
Testa att ändra:
<code>
rs.Open SQL, conn
</code>
till
<code>
rs.Open SQL, conn, 1, 2
</code>
Jag har för mig att ifall man inte specificerar vilket typ av sätt man vill öppna connectionen så får man en del sådana problem.
// MvH BjörneSv:Hämtar inte hela texten från databasen...
Sv:Hämtar inte hela texten från databasen...
är samma sak som:
rs.Open SQL, conn, 0, 1
eller:
Set rs = conn.Execute(SQL)
Det ska inte ge några sådana biverkningar.Sv: Hämtar inte hela texten från databasen...
Sv:Hämtar inte hela texten från databasen...
<%
SQL3 = "SELECT * "
SQL3 = SQL3 + "FROM TechnologyTopics, TechTopicCategories, SubTechCategories "
SQL3 = SQL3 + "WHERE TechnologyTopics.catId=TechTopicCategories.techCatId "
SQL3 = SQL3 + "AND TechnologyTopics.catId=SubTechCategories.techCatId "
SQL3 = SQL3 + "AND TechTopicCategories.techCategory='" & word & "' "
SQL3 = SQL3 + "OR SubTechCategories.subCategory='" & word & "' "
SQL3 = SQL3 + "OR TechnologyTopics.title Like '% " & word & "%' "
SQL3 = SQL3 + "OR TechnologyTopics.text Like '% " & word & "%' "
SQL3 = SQL3 + "ORDER BY TechnologyTopics.date DESC"
%>
...och då får jag flera träffar på samma topic... Hur gör jag en inner join mellan tre tabeller? För jag antar att det är det som är felet här...
Sv: Hämtar inte hela texten från databasen...
<%
SQL3 = "SELECT * "
SQL3 = SQL3 + "FROM TechnologyTopics, TechTopicCategories, SubTechCategories "
SQL3 = SQL3 + "WHERE TechnologyTopics.catId=TechTopicCategories.techCatId "
SQL3 = SQL3 + "AND TechnologyTopics.catId=SubTechCategories.techCatId "
SQL3 = SQL3 + "AND (TechTopicCategories.techCategory='" & word & "' "
SQL3 = SQL3 + "OR SubTechCategories.subCategory='" & word & "' "
SQL3 = SQL3 + "OR TechnologyTopics.title Like '% " & word & "%' "
SQL3 = SQL3 + "OR TechnologyTopics.text Like '% " & word & "%') "
SQL3 = SQL3 + "ORDER BY TechnologyTopics.date DESC"
%>
Men sen tycker jag att det ser lite udda ut när du väljer dessa 2 kopplingar:
* TechnologyTopics.catId=TechTopicCategories.techCatId
* TechnologyTopics.catId=SubTechCategories.techCatId
Jag vet inte hur dina tabeller ser ut, men det känns som om du borde ha någon typ TechnologyTopics.subCatId, eller nåt sånt.
Jag skrev om din select-sats att använda JOIN nedan.
SELECT *
FROM TechnologyTopics t INNER JOIN TechTopicCategories c ON t.catId=c.techCatId
INNER JOIN SubTechCategories s ON t.catId=s.techCatId
WHERE
c.techCategory='word' OR
s.subCategory='word' OR
t.title Like '% word%' OR
t.text Like '% word%'
ORDER BY t.date DESC
Hoppas något av det hjälper.
// MvH Björne
Sv:Hämtar inte hela texten från databasen...
Din inner join får jag syntaxfel på, men mitt förslag som du la in parenteser i funkar utmärkt! Eller kommer att göra när jag fixat relationerna... Texterna kapas ner till 255 tecken om man använder DISTINCT, men när jag fixar relationerna så antar jag att jag inte behöver använda DISTINCT.
Tack för hjälpen!!
//Cicci