IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Opravdu složitý dotaz, mé schopnosti na to nedosáhnou

V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
michales
Člen
Avatar
michales:3.3.2015 10:00

Dobrý den.
měl bych velkou prosbu o složení dotazu do databáze.
Vím co chci ale vůbec nevím jak ten dotaz složit.
Pro představu zde obrázek, v obrázku je i nápsáno jak by to mělo být. Pod obrázkem ještě bude zkopírovaný text z obrázku pro lepší přečtení.
http://www.nahraj-obrazek.cz/…53685618.png

  • jak je vidět první dva řádky se shodují, teď oč jde. Jde mi o to že z tabulky zahranicni by se měli porovnávat Title a skladba pokud existují tak po té porovnat Contentgroup s interpret, pokud se shodují nedělat nic.

Pokud se ale najde shoda jen v Title a v Skladba a není shoda v Contentgroup a interpret tak by to mělo do tabulky lyrics přidat další řádek s názvem skladby(skladba) + interpreta který by měl být z tabulky zahranicni a zkopírovat text
který je v tabulce lyrics pod stejným názvem skladby ale pod jiným interpretem. Tzn. nyní by měl dotaz udělat to že zapíše po kontrole id=53, interpret=Karel Got, text_id=3,
Skladba=pec nám spadla a do sloupce skladba by měl být zkopírován text z už existujícího názvu skladby, tzn. z 1 řádku. Já doufám že jsem to popsal vše správně.
Jak by měl dotaz pro kontrolu i následný zápis vypadat. Chtěl bych to provádět jen v MyAdminu takže nechci používat žádné php. Budu moc vděčný, protože na tohle jsem opravdu krátký.

Odpovědět
3.3.2015 10:00
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
Horyczech
Člen
Avatar
Horyczech:3.3.2015 11:30

Ahoj,
napadlo mě toto:

SELECT @text_id:=max(text_id) FROM lyrics;
INSERT INTO lyrics (text_pisne, interpret, text_id, Skladba)
SELECT ly.text_pisne, za.Contentgroup, @text_id:=@text_id + 1, ly.Skladba
FROM lyrics AS ly
JOIN zahranici AS za ON (za.Title = ly.Skladba AND za.Contentgroup != ly.interpret);
 
Nahoru Odpovědět
3.3.2015 11:30
Avatar
michales
Člen
Avatar
Odpovídá na Horyczech
michales:3.3.2015 11:35

Ahoj, díky za nástřel.
Ještě jsem ho nezkusil a zajímalo by mě jak je to s tím text_id, protože do text_id v tabulce lyrics by se mělo zapsat id z tabulky zahranicni

Nahoru Odpovědět
3.3.2015 11:35
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
Horyczech
Člen
Avatar
Horyczech:3.3.2015 11:39

tak v tom pripade to zjednodusime :)

INSERT INTO lyrics (text_pisne, interpret, text_id, Skladba)
SELECT ly.text_pisne, za.Contentgroup, za.id, ly.Skladba
FROM lyrics AS ly
JOIN zahranici AS za ON (za.Title = ly.Skladba AND za.Contentgroup != ly.interpret);
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
3.3.2015 11:39
Avatar
michales
Člen
Avatar
Odpovídá na Horyczech
michales:3.3.2015 11:52

Skoro to funguje ale problém je že to zapíše text i k interpretovi který s názvem skladby nemá nic společného

Nahoru Odpovědět
3.3.2015 11:52
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Avatar
michales
Člen
Avatar
michales:3.3.2015 11:54

Omlouvám se má chyba, už vím. Funguje to správně

Nahoru Odpovědět
3.3.2015 11:54
"Cíle by měly být třešínky na dortech, ne na hromadách hoven."
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.