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?
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?
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.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!