Kezdőoldal » Számítástechnika » Programok » Van egy Sql feladatom. ugyfel...

Van egy Sql feladatom. ugyfel {azon, nev, szulev, irszam, orsz} befiz {azon, datum, osszeg} Melyek azok a napok, amikor több befizetés is történt?

Figyelt kérdés

Legalább ez a 15. módja, ahogy próbálom megcsinálni, de nem tudom.

SELECT osszeg,COUNT(datum) FROM befiz JOIN ugyfel ON ugyfel.azon = befiz.azon Group BY datum;

Segítene valaki?


2017. ápr. 30. 21:02
 1/1 anonim ***** válasza:

Kezdjük ott, hogy alapból nem jó az ötleted és nem érted a kapcsolatokat.


Ha ugyfel.id = befiz.id-t teszed egyenlővé, akkor 1:1 kapcsolatot csinálsz. Tehát a 2 ID-nak meg kell egyezzen. Tehát hiába van még 1 befizetés az ügyfél részéről, az ügyfél ID-ja nem lesz egyenlő a másik befizetés ID-ával, így nem is fogja kidobni.


Te 1 ügyfélhez több befizetést akarsz csinálni, tehát 1:N kapcsolat kell, aminél tudni kell azonosítani az ügyfél ID-ját többször is.


Itt egy shéma. Ami a PRIMARY KEY után van azzal ne foglalkozz. Generált SQL kód csupán. (MySQL Workbanch) A ".", "..." csak behúzás miatt van.


Ügyfélből kihagytam minden felesleges adatot... név, születési év, stb, mert nem szól bele a lekérdezésbe.


CREATE TABLE IF NOT EXISTS `tmp`.`ugyfel` (

. `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,

. PRIMARY KEY (`id`))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4;



CREATE TABLE IF NOT EXISTS `tmp`.`befiz` (

. `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,

. `datum` DATE NOT NULL,

. `osszeg` INT UNSIGNED NOT NULL,

. `ugyfel_id` INT UNSIGNED NOT NULL,

. PRIMARY KEY (`id`),

. INDEX `fk_befiz_ugyfel_idx` (`ugyfel_id` ASC),

. CONSTRAINT `fk_befiz_ugyfel`

... FOREIGN KEY (`ugyfel_id`)

... REFERENCES `tmp`.`ugyfel` (`id`)

... ON DELETE NO ACTION

... ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4;


INSERT INTO `ugyfel` VALUES (1);

INSERT INTO `befiz` VALUES (1,'2017-05-01',1000,1),(2,'2017-05-01',2000,1);


SELECT SUM(befiz.osszeg) AS 'összesen', COUNT(befiz.datum) AS 'mennyiszer'

FROM ugyfel

INNER JOIN befiz ON ugyfel.id = befiz.ugyfel_id

WHERE befiz.datum = '2017-05-01'


összesen: 3000

mennyiszer: 2


Tehát kell egy idegen kulcs, ami előfordulhat többször is.

2017. máj. 2. 09:37
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!