---
title: "Vilken kod ska jag egentligen använda!?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/110980-vilken-kod-ska-jag-egentligen-använda"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Eclipse"
published: "2004-09-06T21:16:51.000Z"
updated: "2004-09-08T18:29:26.000Z"
replies: 12
views: 376
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/110980-vilken-kod-ska-jag-egentligen-använda"
---

# Vilken kod ska jag egentligen använda!?

## #1 — Eclipse, 2004-09-06T21:16Z

Jag har nu avsatt en hel dag åt vad jag nu tror är fel kod...

Men jag vet inte!

Strippad blir (delar av) koden så här:

```
SQL = "SELECT COUNT(*) " _
& ", (SELECT COUNT(*) FROM " _
& " [room] r, [hotel] h, [company] c WHERE " _
& " r.intCompanyID = c.intID AND h.intCompanyID = c.intID " _
& ") FROM [roomBooking] rb WHERE rb.dteDate =" & dteMyDate & ";"
```

och resultatet blir
array 0 = 0
array1 = 15...
borde bli fyra rum (eller möjligen fem)

Men om jag har med ytterligare parametrar så begränsas urvalet ytterligare, givetvis. Jag blir bara osäker, tänker jag åt rätt håll eller helt galet!? 

Som det är nu räknas alla rum + hotel + company! Jag vill bara räkna rummen!

Permalänk: https://www.webforum.nu/p/110980

## #2 — Eclipse, 2004-09-07T07:49Z

Jag sov på saken och kom på att jag skulle kunna skriva COUNT(.r.intID) i stället för stjärnan men det blir fortfarande 15...!!

Fasen, detta håller inte! :-)

Permalänk: https://www.webforum.nu/p/1432395

## #3 — Engine^, 2004-09-07T07:56Z

Vad är det du vill göra egentligen?

Att det ska bli fyra eller fem istället för 15 är ingen fråga...

Vet du vad du får för resultat från din SELECT? Det kan ju vara praktiskt att se vad den räknar. Då kanske du kan lista ut själv vad det är som går galet.

Permalänk: https://www.webforum.nu/p/1432397

## #4 — Eclipse, 2004-09-07T07:58Z

SQL = "SELECT COUNT(\*) " \_
& ", **(SELECT COUNT(\*) FROM " \_
& " \[room\] r, \[hotel\] h, \[company\] c WHERE " \_
& " r.intCompanyID = c.intID AND h.intCompanyID = c.intID " \_
& " AND r.bolView = TRUE AND h.bolView = TRUE AND c.bolView= TRUE " \_
& ")**  FROM \[roomBooking\] rb WHERE rb.dteDate =" & dteMyDate & ";"

Har jag gjort något uppenbart fel!? När jag lägger till ett rum adderas räknaren med två hela tiden! 4,6, 8...!! Inte så sexigt...

Det betyder att SQL frågan räknar lie av varje. Jag vill bara räkna alla rummen!

Permalänk: https://www.webforum.nu/p/1432398

## #5 — Eclipse, 2004-09-07T08:00Z

Engine, ja... det är väl bara att backa och ta bort och se vad som blir dubbelt.

(Nu skriver vi om varandra!)

Permalänk: https://www.webforum.nu/p/1432400

## #6 — Eclipse, 2004-09-07T09:49Z

OK, jag tror jag har lokaliserat felet, eller problematiken.

Det är för många kopplingar helt enkelt.

\[room\] r 
intID
intCompanyID
bolView

\[hotel\] h
intID
intCompanyID
bolView

\[company\] c
intID
bolView

\*\*\*
Men det kan inte vara bara jag som kopplar på detta viset.

Hur skriver jag SQL frågan för att räkna antalet rum där:
 r.bolView = TRUE AND h.bolView = TRUE AND c.bolView= TRUE 

??

Permalänk: https://www.webforum.nu/p/1432446

## #7 — Engine^, 2004-09-07T15:51Z

```
SELECT Count(*)
FROM room r
INNER JOIN (company c
  INNER JOIN hotel h ON h.intCompanyID = c.intID)
ON c.intID = r.intCompanyID
WHERE r.bolView AND c.bolView AND h.bolView
```

Om det här blir det resultat du är ute efter vet jag inte, men jag förstår inte dina tabeller...

Rent logiskt så bör det finnas en koppling mellan *room* och *hotel*, så att man kan se typ hur många rum ett visst företag har bokat upp i ett visst hotell.

Som det är nu så är det företagen som har ett antal rum och det är väl förvisso naturligt, men långt ifrån logiskt med tanke på dina tabellnamn.

**red.** Möjligen så saknar du en tabell...

Permalänk: https://www.webforum.nu/p/1432693

## #8 — Eclipse, 2004-09-07T16:54Z

Jag kan förklara, när du skriver förstår jag att det blir konstigt!!

Ett företag, company, har en aller flera annex (i koden slarvigt tilldelat namnet 'hotel') som dom har rum i.

Detta är för att systemet ska passa ett företag som har tre rum så väl som stora hotel med 120 rum.

\*\*\*
Det var inte meningen att korsposta...

Permalänk: https://www.webforum.nu/p/1432737

## #9 — Eclipse, 2004-09-07T17:02Z

Det blir 27... Det finns totalt 30 poster, så det var nästan alla!

Av dom 30 är 7 från tabellen \[room\].

Permalänk: https://www.webforum.nu/p/1432746

## #10 — Eclipse, 2004-09-07T17:06Z

Detta blir rätt antal, 7 rum.

```
SQL = "SELECT count(*) " _
& ", (SELECT COUNT(*) FROM " _
& " [room] r " _
& " INNER JOIN [company] c ON r.intCompanyID = c.intID " _
& ") FROM [roomBooking] rb WHERE rb.dteDate =" & dteMyDate & ";"
```

Permalänk: https://www.webforum.nu/p/1432750

## #11 — Engine^, 2004-09-07T18:40Z

Men nu räknar du ju hur många rum ett företag har. Var det det som var meningen?

Permalänk: https://www.webforum.nu/p/1432820

## #12 — Eclipse, 2004-09-07T20:37Z

Tack Engine!! Äntligenär du med på noterna!! Ja, det är meningen!

Eller, ja.... nej, egentligen inte men på sätt och vis.

Jag har plockat bort de övriga 120 raderna kod.... Bara för att förenkla lite...

Hur som helst, det tillkommer kåd som;

... WHERE company.bolView = TRUE AND hotel.bolView = TRUE AND room.bolView = TRUE

sen är det massa med datum och öppettider och lite annat... drösa-mö-e, som smålänningen skulle säga!

Permalänk: https://www.webforum.nu/p/1432934

## #13 — Eclipse, 2004-09-08T18:29Z

Dagen har ängats åt annat. Men jag överväger starkt att överge mina fina idéer... för detta är superklurigt! Svårt att förklara, svårt att få fram rätt värdena.

Det känns inte så tryggt inflör framtiden att ha så här kopiöst mycket kod som jag inte fattar vad som gör vad...!! Helt klart är att fler application-variabler är att föredra, om inte annat så för dokumentationen!

```
Jaghar fått lite hjälp från annat håll idag.

Detta fungerar:

SQL = " SELECT Count(room.intID) as Antal " _
& " FROM (room INNER JOIN company ON room.intCompanyID = company.intID) "_
& " INNER JOIN hotel ON company.intID = hotel.intCompanyID  "_
& " WHERE room.bolView=True AND company.bolView=True  AND hotel.bolView=True "_
& " AND hotel.intLanguageID=1 ;"

Detta fungerar inte:

SQL = " SELECT Count(room.intID) as Antal " _
& " FROM (room INNER JOIN company ON room.intCompanyID = company.intID) "_
& " INNER JOIN hotel ON company.intID = hotel.intCompanyID  "_
[b]& " OUTER JOIN roomCategoryDetail rcd ON room.intID = rcd.intRoomID " _[/b]
& " WHERE room.bolView=True AND company.bolView=True  AND hotel.bolView=True "_
& " AND hotel.intLanguageID=1 ;"
```

Permalänk: https://www.webforum.nu/p/1433543

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/110980-vilken-kod-ska-jag-egentligen-använda
