Tapahtumat

Kun kirjaudut sisään näet tässä ilmoitukset sinua kiinnostavista asioista.

Kirjaudu sisään

Työhaastattelussa: sinulla on kaksi samanlaista tietokantaa. Toisesta poistetaan rivi. Miten saat selville, mikä rivi poistettiin?

Vierailija
04.05.2025 |

Vastasin, että laitan tietokannat vierekkäisiin ikkunoihin ja alan rivi riviltä vertailla. Onko tämä oikea vastaus? Panostahan siinä aikanaan tulee sen kohdalle, jota ei toisesta löydy!

Kommentit (70)

Vierailija
1/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Puhutaanko nyt oikeista tietokannoista ja pitäisi tehdä SQL-lause, jolla asia selvitetään vai esim. kahdesta Excel-taulukosta (jotka eivät ole siis oikeita tietokantoja)?

Vierailija
2/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Onko tosiaan kysymys kahdesta eri tietokannasta vai kahdesta taulusta? Jälkimmäinen olisi tosi helppo tehdä yhdellä SQL-kyselyllä, mutta edellisen osaisin tehdä vain kirjoittamalla muuta ohjelmakoodia SQL:n lisäksi.

Ap:n vastaus oli minusta joka tapauksessa huono.

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Vierailija
3/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Puhut tietokannasta. Eli pitäisi vertailtailla kantoja ja jokaisen taulun välillä käydä vertailu läpi?  Kannassa voi olla satoja tauluja. Ehkä vain ensimmäisen katsoisin sen kannan transaktio logista, mikä rivi poiistettu. Olisi nopein.

Vierailija
4/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Onko tosiaan kysymys kahdesta eri tietokannasta vai kahdesta taulusta? Jälkimmäinen olisi tosi helppo tehdä yhdellä SQL-kyselyllä, mutta edellisen osaisin tehdä vain kirjoittamalla muuta ohjelmakoodia SQL:n lisäksi.

Ap:n vastaus oli minusta joka tapauksessa huono.


Select avainsarake molemmista, lajittelee ja sitten vertaa rivi riviltä. Sen voi tehdä myös tehokkaammin mutta tuo on yksinkertainen ratkaisu.

Vierailija
5/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Tyhmä, opettele työsi ennen kuin kyselet

Vierailija
6/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Vierailija kirjoitti:

Onko tosiaan kysymys kahdesta eri tietokannasta vai kahdesta taulusta? Jälkimmäinen olisi tosi helppo tehdä yhdellä SQL-kyselyllä, mutta edellisen osaisin tehdä vain kirjoittamalla muuta ohjelmakoodia SQL:n lisäksi.

Ap:n vastaus oli minusta joka tapauksessa huono.

 

Select avainsarake molemmista, lajittelee ja sitten vertaa rivi riviltä. Sen voi tehdä myös tehokkaammin mutta tuo on yksinkertainen ratkaisu.

Jos kysymys on kahdesta tietokannasta, niin niissä voi kummassakin olla satoja tauluja. Eli tuo juttu pitäisi toistaa tietokannan jokaiselle taululle. 

Mutta jos kysymys on kahdesta taulusta, niin ratkaisu on helppo:

SELECT *

FROM Taulu1 WHERE avainsarake NOT IN

(SELECT avainsarake

 FROM Taulu2);

Sisältö jatkuu mainoksen alla
Vierailija
7/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Painan ctrl-Z. 

Vierailija
8/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Miksi hakisin tuollaista suorittavan työn paikkaa?

Sisältö jatkuu mainoksen alla
Vierailija
9/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Painan ctrl-Z. 

Minä painan ctrl-alt-del ja lähden kotiin.

Vierailija
10/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Miksi hakisin tuollaista suorittavan työn paikkaa?


"Ei tarvitse osata mitään kun alaiset tekee kaiken"?

Sisältö jatkuu mainoksen alla
Vierailija
11/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Etit vaan nopealla hakusanalla kummassa rivi on tallella, ja siinä se

Vierailija
12/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Tiputtaisin molemmat tietokannat Word-dokumenteiksi ja sitten käyttäisin Vertaa asiakirjoja -toimintoa.

Sisältö jatkuu mainoksen alla
Vierailija
13/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Vierailija kirjoitti:

Vierailija kirjoitti:

Vierailija kirjoitti:

Onko tosiaan kysymys kahdesta eri tietokannasta vai kahdesta taulusta? Jälkimmäinen olisi tosi helppo tehdä yhdellä SQL-kyselyllä, mutta edellisen osaisin tehdä vain kirjoittamalla muuta ohjelmakoodia SQL:n lisäksi.

Ap:n vastaus oli minusta joka tapauksessa huono.

 

Select avainsarake molemmista, lajittelee ja sitten vertaa rivi riviltä. Sen voi tehdä myös tehokkaammin mutta tuo on yksinkertainen ratkaisu.

Jos kysymys on kahdesta tietokannasta, niin niissä voi kummassakin olla satoja tauluja. Eli tuo juttu pitäisi toistaa tietokannan jokaiselle taululle. 

Mutta jos kysymys on kahdesta taulusta, niin ratkaisu on helppo:

SELECT *

FROM Taulu1 WHERE avainsarake NOT IN

(SELECT avainsarake

 FROM Taulu2);

Except on myös hyvä, ehkä tehokkaampikin.

Vierailija
14/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Antaisin ChatGPT:n tehdä homman.

Sisältö jatkuu mainoksen alla
Vierailija
15/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Vastauksesi osoittaa loogista ajattelua, mutta työhaastattelutilanteessa odotetaan usein tehokkaampaa, teknisesti optimoitua ratkaisua varsinkin jos haet tekniseen tai IT-alan tehtävään.

Mikä olisi parempi vastaus?

Riippuen tietokannan koosta ja käytössä olevista työkaluista, tehokkaampi tapa olisi:

1. SQL-kyselyllä erot

Jos kyseessä on relaatiotietokanta (esim. PostgreSQL, MySQL), voit tehdä EXCEPT-operaation (tai vastaavan) kahden taulun välillä:

sql

CopyEdit

SELECT * FROM tietokanta1.taulu EXCEPT SELECT * FROM tietokanta2.taulu;

Tämä palauttaa rivit, jotka ovat vain ensimmäisessä tietokannassa, eli poistettu rivi.

Joissain tietokannoissa (esim. MySQL) EXCEPT ei ole suoraan tuettu, mutta voit käyttää LEFT JOINia ja IS NULL -ehtoa:

sql

CopyEdit

SELECT a.* FROM tietokanta1.taulu a LEFT JOIN tietokanta2.taulu b ON a.primary_key = b.primary_key WHERE b.primary_key IS NULL;

2. Hash-tarkistus

Jos rivejä on todella paljon, voit laskea esimerkiksi jokaisesta rivistä hashin (esim. SHA256) ja vertailla listoja:

sql

CopyEdit

SELECT SHA2(CONCAT_WS(',', sarake1, sarake2, sarake3), 256) AS hash FROM taulu;

Sitten vertailet hasheja ja etsit puuttuvan.

Yhteenveto:

Vastaus vertaan visuaalisesti rivi riviltä on looginen mutta tehoton.

Parempi vastaus olisi käyttää SQL:ää tai ohjelmallista ratkaisua erotusten etsimiseen.

Työhaastattelussa kannattaa viestiä, että ymmärrät sekä ongelman logiikan että osaat käyttää tehokkaita työkaluja sen ratkaisemiseen.

 

Vierailija
16/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Oikea vastaus olis ollu, että painaisin sitä back-nuolta.

Vierailija
17/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Siis oliko tämä logiikkakysymys tai joku kompa? Teknisestihän tuon voi tehdä helposti miten vain mutta ehkä työhaastattelussa kysymyksen merkitys on eri.

Itse en haastattelutilanteessa varmasti osaisi mitenkään järkevästi tuohon vastata vaikka koodaan ja teen tietokantatöitä jatkuvasti. Osaan tehdä nuo asiat itsekseni mutta en pysty sosiaalisissa tilanteissa niitä selittämään.

Vierailija
18/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Haetko työtä jossa vaaditaan Office-ohjelmistojen osaamista tai olet väittänyt tuntevasi ne? Tuo tehtävä vaikuttaa excel-harjoitukselta.

Tuskin olit vakavissasi kertoessasi oman ratkaisusi.

Vierailija
19/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Itse etsin poistetun rivin roskakorista, eikös vieläkin käytetä reikäkortteja?

Vierailija
20/70 |
04.05.2025 |
Näytä aiemmat lainaukset

Riippuu tietokannasta, mutta luettavassa olevassa muodossa on helppo etsiä eroavaisuus tuetokannan vertailutoiminnalla.. 

tosin sitä ennen kysyisin onko versiohistorian tallennus päällä ja katsoisin sen kautta, mitä kohtaa on muutettu, jos tämä on ollut viimeisen muutos kompakysymykseen ctrl+z

Kirjoita seuraavat numerot peräkkäin: seitsemän yksi seitsemän