---
title: "SQL problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/116019-sql-problem"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "U2K"
published: "2004-11-16T09:48:36.000Z"
updated: "2007-03-17T00:38:46.000Z"
replies: 7
views: 393
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/116019-sql-problem"
---

# SQL problem

## #1 — U2K, 2004-11-16T09:48Z

Hej jag är newbee på så här långa SQL satser med kopplade tabeller. Innan använde jag mig av flera SQL satser och fick tillslut göra om hela databasstrukturen för att logiken försvann.
Nu har jag dock fixat till det mer logiskt.. men är inte så bra på det där med JOIN och att utesluta vissa poster..

Denna SQL sats visar alla matcher med resultat och med hjälp av INFO kör jag en IF sats för att ta fram de matcher som har match information..

```php
SELECT D.m_info AS info, A.match_id AS m_id, CONCAT( X.hemma, ' - ', X.borta ) AS resultat, CONCAT( B.namn, ' - ', C.namn ) AS vs
	FROM k_matcher AS A
	LEFT JOIN k_resultat AS X ON X.match_id = A.match_id
	LEFT JOIN k_klubbar AS B ON A.home_id = B.klubb_id
	LEFT JOIN k_klubbar AS C ON A.away_id = C.klubb_id
	LEFT JOIN k_match_analys AS D ON A.match_id = D.m_id
	ORDER BY A.datum DESC LIMIT $n_max
```

 

IF satsen ser ut så här typ

```php
If($row['info'] == NULL)
$link_show = false;
else
$link_show = true;
```

Låt oss säga att en post får TRUE, då kommer posten efter också att vara TRUE även om  INFO är NULL.. 

Vad kan vara fel?

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

## #2 — LarsG, 2004-11-16T10:00Z

Varför använder du left join då?

```
SELECT D.m_info AS info, A.match_id AS m_id, CONCAT( X.hemma, ' - ', X.borta ) AS resultat, CONCAT( B.namn, ' - ', C.namn ) AS vs
    FROM k_matcher AS A
    inner JOIN k_resultat AS X ON X.match_id = A.match_id
    inner JOIN k_klubbar AS B ON A.home_id = B.klubb_id
    inner JOIN k_klubbar AS C ON A.away_id = C.klubb_id
    inner JOIN k_match_analys AS D ON A.match_id = D.m_id
    ORDER BY A.datum DESC LIMIT $n_max
```

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

## #3 — U2K, 2004-11-16T10:13Z

Ja varför!

Jag har alltid gjort det och det har fungerat fint på mina övriga SQL satser.. 

 ;) 
Dags att köpa en SQL bok och läsa på lite.. 
De där olika sätten att utföra JOIN är jag inte med på.

Tack LarsG för det snabba svaret.

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

## #4 — U2K, 2004-11-16T10:17Z

SQL satsen gick igenom.. Men nu visar den bara de matcher som har information i k_match_analys.. Hur ska man göra för att den ska visa samtliga matcher..

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

## #5 — LarsG, 2004-11-16T11:53Z

I så fall får du gå tillbaka till left join. Jag tror att problemet där beror på hur du kontrollerar om något är null i PHP.

Du kan lägga in det direkt i din SQL-sats istället

```
SELECT case when D.m_info is null then 'False' else 'True' end AS info, A.match_id AS m_id, CONCAT( X.hemma, ' - ', X.borta ) AS resultat, CONCAT( B.namn, ' - ', C.namn ) AS vs

    FROM k_matcher AS A

    LEFT JOIN k_resultat AS X ON X.match_id = A.match_id

    LEFT JOIN k_klubbar AS B ON A.home_id = B.klubb_id

    LEFT JOIN k_klubbar AS C ON A.away_id = C.klubb_id

    LEFT JOIN k_match_analys AS D ON A.match_id = D.m_id

    ORDER BY A.datum DESC LIMIT $n_max
```

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

## #6 — U2K, 2004-11-16T12:43Z

Nu fungerar det som det skall.. 
Tackar!

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

## #7 — Uffe82, 2007-03-16T23:55Z

Räkna

Hej!

Jag har ett litet problem som jag tänkte kanske går att lösa med SQL kodning..

```
SELECT case when A.hemma > A.borta then 'vinst' else 'forlust' end as banan FROM resultat AS A
LEFT JOIN match AS M ON M.match_id = A.match_id
WHERE M.team = 1 AND M.datum > '2007-01-01 00:00:00' AND M.datum < '2007-12-31 23:59:59'
AND A.hemma IS NOT NULL AND A.BORTA IS NOT NULL
```

 

RETURNERAR

BANAN
forlust
vinst
vinst
forlust
forlust
forlust
vinst
......

Finns det någon möjlighet att räkna antalet förluster i rad samt vinster i rad under det specifierade tidsintervallet.. eller skall man gå på resultatet med PHP programmering..

Tänkte att det kanske finns en snygg lösning med SQL kod..

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

## #8 — headbug, 2007-03-17T00:38Z

Uffe82,  skapa en ny fråge-tråd här så får du nog svar/mer svar/snabbare svar?!

MVH

/edit: hoppla såg den nya tråden precis efter...

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/116019-sql-problem
