Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [OPGELOST] Beginnersvraagje: sql join/union query probleempje  (gelezen 1374 keer)

Offline axelv

  • Lid
Beste forumleden,

Het probleem: ik heb 2 tabellen, die bestaan uit een id en een sequentie. Beide tabellen hebben als primary key ID.
tabel 1 (initialsequences):
ID           |    IniSequence
---------------------------------------
>OSIP0_0 MKERSKTQLN
>OSIP0_1 MGYRNRSYLVKSLPF
>OSIP3_1 MILFLFIFLVASH
tabel 2 (processedsequences):
ID           |      ProcSequence
------------------------------------------
>OSIP3_1 FIFLVASH
>BIP24_6 DGKESIACLGSGYGGDFGG    # afkomstig van een sequentie die ik niet getoond heb in bovenstaande tabel
>SIP147_0 NEGEEEELVETELVEMELVETTSFYLITILKILFH     # afkomstig van een sequentie die ik niet getoond heb in bovenstaande tabel

Nu zou ik deze tabellen moeten vergelijken met elkaar en de resultaten in een nieuwe tabel steken.
De initialsequences tabel bevat alle sequenties, de processedsequences bevat de verwerkte sequenties, de ID blijft het zelfde. Niet alle initiële sequentie moesten verwerkt worden m.a.w. de processedsequences tabel is kleiner. Het doel is nu om een nieuwe tabel te maken die alle sequentie bevat van de initiële, maar als er een processed sequentie is dan moet deze in de tabel worden ingegeven. De output tabel zou er als volgt moeten uitzien...
ID            |      MatSequence
----------------------------------------
>OSIP0_0 MKERSKTQLN
>OSIP0_1 MGYRNRSYLVKSLPF
>OSIP3_1 FIFLVASH
>BIP24_6 DGKESIACLGSGYGGDFGG
>SIP147_0 NEGEEEELVETELVEMELVETTSFYLITILKILFH

Ik heb al een hele tijd zitten worstelen met de sql syntax, maar spijtig genoeg met weinig resultaat...
Is er iemand die wat licht in het duister kan brengen?

Alvast bedankt!
« Laatst bewerkt op: 2012/05/03, 18:09:06 door axelv »

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #1 Gepost op: 2012/04/29, 14:39:34 »

Dat kun je inderdaad met een JOIN query doen. Welke DBMS gebruik je eigenlijk? (MySQL ofzo?)

Ik weet niet 100% zeker wat je bedoelt. Verder is het met die vage namen ook lastig te begrijpen. Maar ik denk dat je ongeveer het volgende wilt:
SELECT ID, i.IniSequence, p.ProcSequence FROM initialsequences i JOIN processedsequences p ON i.ID = p.ID;of
SELECT * FROM initialsequences i, processedsequences p WHERE i.ID = p.ID;  -- zou hetzelfde moeten opleveren Dit is een begin. Hier kun je mee spelen, wil je een LEFT JOIN of een RIGHT JOIN. Zoek in de documentatie van de betreffende DB wat welke JOIN doet. ZIjn tal van voorbeelden te vinden
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline axelv

  • Lid
Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #2 Gepost op: 2012/04/29, 15:08:55 »
Bedankt voor de reactie :) Dit helaas niet wat ik zoek....
Uw oplossing maakt 3 en 4 kolommen respectievelijk,...

Ik denk dat ik het probleem redelijk slecht heb uitgelegd...

Het gaat om eiwitsequenties. Ik heb een java progamma geschreven dat van een initieel tekstbestand met eiwitsequenties en hun bijhorende identifier in een tabel laad (initialsequences). Vervolgens worden deze sequenties verwerkt (-> Sommige eiwitsequenties bezitten een kleine eiwitsequentie die moet verwijderd worden). Het tooltje knipt deze sequenties en plaatst de benodigde sequentie in een andere tabel (processedsequences). Nu moet ik deze tabellen joinen met elkaar zodat ik een nieuwe tabel krijg:  als een sequentie een processed sequentie bezit moet de sequentie uit de initiële vervangen worden door die van de processed. De nieuwe tabel bestaat uit een kolom ID en een kolom Sequence.

Ik hoop dat dit een beetje mijn probleem verduidelijkt (samen met de voorbeelden uit mijn vorige reactie).
Toch bedankt voor de reactie, ik zal inderdaad nog meer  moeten opzoeken en proberen.

mvg

ps. het is inderdaad MySQL

Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #3 Gepost op: 2012/04/30, 02:17:26 »
Zoiets als dit denk ik:
SELECT i.ID, i.IniSequence FROM  initialsequences i LEFT JOIN processedsequences p WHERE p.ProcSequence IS NULL UNION SELECT ID, ProcSequence FROM processedsequences;
Misschien nog een ORDER BY toevoegen als dat belangrijk is.

Offline axelv

  • Lid
Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #4 Gepost op: 2012/05/01, 14:50:19 »
Ik zou graag je query proberen , maar helaas zit er een fout in die ik er niet uitkrijg  :( Ergens rond "WHERE"

Sorry mijn sql kennis is echt ondermaats, heb al vanalles geprobeerd, maar helaas...

Heel erg bedankt voor het meedenken!

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #5 Gepost op: 2012/05/01, 14:53:42 »
Ik zou graag je query proberen , maar helaas zit er een fout in die ik er niet uitkrijg  :( Ergens rond "WHERE"
Kopieer dan de exacte foutmelding, misschien kunnen we helpen.
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Offline axelv

  • Lid
Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #6 Gepost op: 2012/05/01, 15:25:05 »
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE' at line 1

Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #7 Gepost op: 2012/05/01, 19:22:05 »
A, ik zie inderdaad een fout..
Probeer deze eens?
SELECT i.ID, i.IniSequence FROM  initialsequences i LEFT JOIN processedsequences p ON i.ID = p.ID  WHERE p.ProcSequence IS NULL UNION SELECT ID, ProcSequence FROM processedsequences;

Offline axelv

  • Lid
Re: Beginnersvraagje: sql join/union query probleempje
« Reactie #8 Gepost op: 2012/05/03, 18:08:44 »
Hartelijk bedankt Johan en Rachid!

Mijn programma werkt nu naar behoren  ^-^