SQL ger fel resultat, utan att jag försåt varför

  • Författare
  • Meddelande

Aladin.Hindawi

på gång

  • Inlägg: 4
  • Blev medlem: 06 feb 2020, 17:57

SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 18:11

Jag har skriver inte detta för att slå ihop tabeller
SELECT *
FROM kurs AS k, kurstillfalle AS kt
WHERE k.kod = kt.kurskod;

Men tabellen kommer tillbaka tom varje gång. så jag började fundera varför. för när jag skriver in
SELECT * FROM kurs, kurstillfalle;

så kommer tabellen tillbaka rätt. Men när jag skriver in
SELECT *
FROM kurs AS k
JOIN kurstillfalle AS kt
ON k.kod = kt.kurskod;
så får jag tillbaka att kurskod är akronymerna från alla larare och kurs ansvarig blir siffrer.

Jag vet att felet ligger här:
USE skolan;
DROP TABLE IF EXISTS kurstillfalle;
CREATE TABLE kurstillfalle
(
id INT AUTO_INCREMENT,
kurskod VARCHAR(6) NOT NULL REFERENCES kurs(kod),
kursansvarig CHAR(3) NOT NULL REFERENCES larare(akronym),
lasperiod INT NOT NULL,

PRIMARY KEY (id)
);
För när jag skriver:
SELECT kurskod FROM kurstillfalle;
men då får jag bara akronymerna till lärarna.

här kommer de två andra tabellerna denna länkar till
USE skolan;
DROP TABLE IF EXISTS kurs;
CREATE TABLE kurs
(
kod CHAR(6),
namn VARCHAR(40),
poang FLOAT,
niva CHAR(3),

PRIMARY KEY (kod)
);
och
USE skolan;
DROP TABLE IF EXISTS larare;
CREATE TABLE larare
(
akronym CHAR(3),
avdelning CHAR(4),
fornamn VARCHAR(20),
efternamn VARCHAR(20),
kon CHAR(1),
lon INT,
fodd DATE,

PRIMARY KEY (akronym)
);
och här blir allting rätt.
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11198
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 18:25

Aladin.Hindawi skrev:Jag har skriver inte detta för att slå ihop tabeller
SELECT *
FROM kurs AS k, kurstillfalle AS kt
WHERE k.kod = kt.kurskod;

Men tabellen kommer tillbaka tom varje gång. så jag började fundera varför.


Visa vad du har i respektive tabell.

Ungefär så här.

Kod: Markera allt
MySQL [skolan]> select * from kurs;                             
+--------+------------------------------------+-------+------+   
| kod    | namn                               | poang | niva |   
+--------+------------------------------------+-------+------+   
| AST101 | Astronomi                          |     5 | G1N  |   
| DJU101 | Skötsel och vård av magiska djur   |     4 | G1F  |   
| DRY101 | Trolldryckslära                    |     6 | G1N  |   
| DRY102 | Trolldryckslära                    |     6 | G1F  |   
| KVA101 | Kvastflygning                      |     4 | G1N  |   
| MUG101 | Mugglarstudier                     |     6 | G1F  |   
| SVT101 | Försvar mot svartkonster           |     8 | G1N  |   
| SVT201 | Försvar mot svartkonster           |     6 | G1F  |   
| SVT202 | Försvar mot svartkonster           |     6 | G1F  |   
| SVT401 | Försvar mot svartkonster           |     6 | G2F  |   
| VAN101 | Förvandlingskonst                  |     5 | G1F  |   
+--------+------------------------------------+-------+------+   
11 rows in set (0.00 sec)                                       


Kod: Markera allt
MySQL [skolan]> select * from kurstillfalle; 
+----+---------+--------------+-----------+   
| id | kurskod | kursansvarig | lasperiod |   
+----+---------+--------------+-----------+   
|  1 | SVT101  | gyl          |         1 |   
|  2 | SVT101  | gyl          |         3 |   
|  3 | SVT201  | ala          |         1 |   
|  4 | SVT202  | ala          |         2 |   
|  5 | SVT401  | sna          |         1 |   
|  6 | KVA101  | hoc          |         1 |   
|  7 | DJU101  | hag          |         3 |   
|  8 | DRY101  | sna          |         2 |   
|  9 | DRY102  | sna          |         3 |   
| 10 | MUG101  | min          |         4 |   
+----+---------+--------------+-----------+   
10 rows in set (0.01 sec)                     


Visa sedan, på samma sätt, resultat av den frågan du testar.
...
..:
.... /mos

Aladin.Hindawi

på gång

  • Inlägg: 4
  • Blev medlem: 06 feb 2020, 17:57

Re: SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 18:40

mysql> SELECT * FROM kurstillfalle;
+----+---------+--------------+-----------+
| id | kurskod | kursansvarig | lasperiod |
+----+---------+--------------+-----------+
| 1 | gyl | 1 | 0 |
| 2 | gyl | 3 | 0 |
| 3 | ala | 1 | 0 |
| 4 | ala | 2 | 0 |
| 5 | sna | 1 | 0 |
| 6 | hoc | 1 | 0 |
| 7 | hag | 3 | 0 |
| 8 | sna | 2 | 0 |
| 9 | sna | 3 | 0 |
| 10 | min | 4 | 0 |
+----+---------+--------------+-----------+

+--------+------------------------------------+-------+------+
| kod | namn | poang | niva |
+--------+------------------------------------+-------+------+
| AST101 | Astronomi | 5 | G1N |
| DJU101 | Skötsel och vård av magiska djur | 4 | G1F |
| DRY101 | Trolldryckslära | 6 | G1N |
| DRY102 | Trolldryckslära | 6 | G1F |
| KVA101 | Kvastflygning | 4 | G1N |
| MUG101 | Mugglarstudier | 6 | G1F |
| SVT101 | Försvar mot svartkonster | 8 | G1N |
| SVT201 | Försvar mot svartkonster | 6 | G1F |
| SVT202 | Försvar mot svartkonster | 6 | G1F |
| SVT401 | Försvar mot svartkonster | 6 | G2F |
| VAN101 | Förvandlingskonst | 5 | G1F |
+--------+------------------------------------+-------+------+

mysql> SELECT * FROM larare;
+---------+-----------+-----------+------------+------+-------+------------+-----------+
| akronym | avdelning | fornamn | efternamn | kon | lon | fodd | kompetens |
+---------+-----------+-----------+------------+------+-------+------------+-----------+
| ala | DIPT | Alastor | Moody | M | 30000 | 1943-04-03 | 1 |
| dum | ADM | Albus | Dumbledore | M | 80000 | 1941-04-01 | 1 |
| fil | ADM | Argus | Filch | M | 25000 | 1946-04-06 | 1 |
| gyl | DIPT | Gyllenroy| Lockman | M | 30000 | 1952-05-02 | 1 |
| hag | ADM | Hagrid | Rubeus | M | 25000 | 1956-05-06 | 1 |
| hoc | DIDD | Madam | Hooch | K | 35000 | 1948-04-08 | 1 |
| min | DIDD | Minerva | McGonagall| K | 40000 | 1955-05-05 | 1 |
| sna | DIPT | Severus | Snape | M | 40000 | 1951-05-01 | 1 |
+---------+-----------+-----------+------------+------+-------+------------+-----------+
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11198
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 18:53

Vilken SQL fråga har du problem med?

Visa SQL frågan och dess svar.
Berätta vilket svar du förväntar dig.
...
..:
.... /mos

Aladin.Hindawi

på gång

  • Inlägg: 4
  • Blev medlem: 06 feb 2020, 17:57

Re: SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 18:55

på denna får jag inte in kurskord i denna tabell får in akronymer där tabell ska vara och läsperiod där kursansvarig ska vara.
mysql> SELECT * FROM kurstillfalle;
+----+---------+--------------+-----------+
| id | kurskod | kursansvarig | lasperiod |
+----+---------+--------------+-----------+
| 1 | gyl | 1 | 0 |
| 2 | gyl | 3 | 0 |
| 3 | ala | 1 | 0 |
| 4 | ala | 2 | 0 |
| 5 | sna | 1 | 0 |
| 6 | hoc | 1 | 0 |
| 7 | hag | 3 | 0 |
| 8 | sna | 2 | 0 |
| 9 | sna | 3 | 0 |
| 10 | min | 4 | 0 |
+----+---------+--------------+-----------+




det är här någonstans koden är fel för allt annat blir rätt
USE skolan;
DROP TABLE IF EXISTS kurstillfalle;
CREATE TABLE kurstillfalle
(
id INT AUTO_INCREMENT,
kurskod VARCHAR(6) NOT NULL REFERENCES kurs(kod),
kursansvarig CHAR(3) NOT NULL REFERENCES larare(akronym),
lasperiod INT NOT NULL,

PRIMARY KEY (id)
);
Användarvisningsbild

mos

dbwebb

  • Inlägg: 11198
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 20:20

Pröva att tömma tabellen, och stoppa in värdena igen.
Det ser ut som du har stoppat in felaktiga värden i tabellen.

Du kan jämföra med de värden jag visade ovan.

Det bästa är att gå tillbaka till guiden/artikeln där du skall lägga in värden i tabellen och dubbelkolla om du gör rätt.
...
..:
.... /mos

Aladin.Hindawi

på gång

  • Inlägg: 4
  • Blev medlem: 06 feb 2020, 17:57

Re: SQL ger fel resultat, utan att jag försåt varför

Inlägg06 feb 2020, 22:12

hittar vad det exakta felet är nu. min tabel läser in kurstillfalle fel på grund av id INT AUTO_INCREMENT, för när jag to bort det då läser den in tabelen som vanligt men när jag har med ID INT AUTO_INCREMENT så läser den inte in kurskoder men.



USE skolan;
DROP TABLE IF EXISTS kurstillfalle;
CREATE TABLE kurstillfalle
(
id INT AUTO_INCREMENT,
kurskod VARCHAR(6) NOT NULL REFERENCES kurs(kod),
kursansvarig CHAR(3) NOT NULL REFERENCES larare(akronym),
lasperiod INT NOT NULL,

PRIMARY KEY (id)
);

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 5 gäster