[Java/SQL] JOIN werkt niet op 2 werkende queries

Pagina: 1
Acties:

  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Ik heb 2 werkende queries. Deze wil ik graag in 1 resultset hebben in Java. Dit in verband met het makelijk kunnen maken van een ArrayList.

Ik heb nu deze code:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
String SQL1SELECT = "(SELECT sub_art_nummer, sub_beschrijving ";
      String SQL1FROM = "FROM sub_product_beschrijving ";
      String SQL1WHERE = "WHERE sub_art_nummer= '"+artikel+"') ";


            String SQL = "UNION ";

            String SQL2SELECT = "(SELECT sub_onder, sub_boven, sub_actueel ";
      String SQL2FROM = "FROM sub_product_voorraad ";
      String SQL2WHERE = "WHERE sub_art_nummer_vrd = '"+artikel+"');";
            String SQL1 = SQL1SELECT + SQL1FROM + SQL1WHERE;
            String SQL2 = SQL2SELECT + SQL2FROM + SQL2WHERE;
      String QUERY = SQL1 + SQL + SQL2;


Ook heb ik dit geprobeerd, theoretisch correct:
Java:
1
2
3
4
String SELECT = "SELECT sub_product_beschrijving.sub_art_nummer, sub_product_beschrijving.sub_beschrijving, sub_product_voorraad.[sub_onder], sub_product_voorraad.[sub_boven], sub_product_voorraad.[sub_actueel] ";
      String FROM = "FROM sub_product_beschrijving INNER JOIN (sub_product_voorraad INNER JOIN sub_product_tekeningen ON sub_product_voorraad.sub_art_nummer_vrd = sub_product_tekeningen.sub_art_nummer_tek) ON sub_product_beschrijving.sub_art_nummer = sub_product_voorraad.sub_art_nummer_vrd ";
      String WHERE = "WHERE (((sub_product_beschrijving.sub_art_nummer)= '"+artikel+"'))";
        String SQL = SELECT +FROM +WHERE;


Dit zou allebij moeten werken. Als ik de eerste querie methode gebruik en beide queries appart uitvoer werkt het wel, maar dan komen ze niet in 1 resultset. Wil ik de joi dan krijg ik geen waarde.

Deze waarde check ik dan dmv (dit geeft geen "echte" waarde, maar een drivername met een set carakters wat betekent dat er gegevens opgehaald zijn):

System.out.println(rs);

Waar rs de resulset betreft! Dit geeft geen resultaat

Ps. Ben niet onbekend met SQL, in php gaan dit soort dingen wel gewoon gebruik ik voor wat kleine dingen ook. Maar waarom lukt het hier niet?

Dit is btw de println van de querie:

(SELECT sub_art_nummer, sub_beschrijving FROM sub_product_beschrijving WHERE sub_art_nummer= '8-S18001A') UNION (SELECT sub_onder, sub_boven, sub_actueel FROM sub_product_voorraad WHERE sub_art_nummer_vrd = '8-S18001A');

[ Voor 21% gewijzigd door BSeB op 21-10-2004 09:07 ]


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Als je met een union wilt werken zullen het aantal en de typen van de kolommen in je select lists overeen moeten komen.
Overigens doet een union impliciet een distinct, je bedoelt waarschijnlijk union all.

Daarnaast begrijp ik niet waarom je hier naar zoekt, je kunt toch best 2x in dezelfde array een resultset schrijven?

Who is John Galt?


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
justmental schreef op 21 oktober 2004 @ 08:57:
Als je met een union wilt werken zullen het aantal en de typen van de kolommen in je select lists overeen moeten komen.
Overigens doet een union impliciet een distinct, je bedoelt waarschijnlijk union all.

Daarnaast begrijp ik niet waarom je hier naar zoekt, je kunt toch best 2x in dezelfde array een resultset schrijven?
Bij union all werkt het nog steeds niet, heb de docs van MySQL voor me liggen:

http://dev.mysql.com/doc/mysql/en/UNION.html

Alleen daar schiet het ook niet echt mee op. Het liefst maak ik maar 1 query.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:05

Janoz

Moderator Devschuur®

!litemod

Anders lees je even wat justmental zegt en kijk je vervolgens even naar je query waarin je een tabel met "sub_art_nummer, sub_beschrijving" = 2 kolommen probeert te 'unionen' met "sub_onder, sub_boven, sub_actueel" = 3 kolommen en ga dan nog eens nadenken waarom je union niet lukt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Janoz schreef op 21 oktober 2004 @ 09:55:
Anders lees je even wat justmental zegt en kijk je vervolgens even naar je query waarin je een tabel met "sub_art_nummer, sub_beschrijving" = 2 kolommen probeert te 'unionen' met "sub_onder, sub_boven, sub_actueel" = 3 kolommen en ga dan nog eens nadenken waarom je union niet lukt.
Ik zie inderdaad waarom het niet gaat. Maar waarom lukt het dan ook niet met die andere query, deze dus:

tabel sub_product_gegevens bevat kolommen: sub_art_nummer - sub_beschrijving
tabel sub_product_voorraad bevat kolommen: sub_art_nummer_vrd - sub_onder - sub_boven - sub_actueel

Met een select query zou dit dan moeten worden:

SQL = "SELECT sub_art_nummer, sub_beschrijving, sub_onder, sub_boven, sub_actueel FROM sub_product_gegevens, sub_product_voorraad WHERE sub_art_nummer = '8-S18001A'"

Ps. In beide tabellen zitten geen dubbele veldnamen, dus hij kan niet in de war raken, zoals hierboevn al stond!

Misschien dat dit meer duidelijkheid schept. Zo zou het moeten werken toch?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 08:05

Janoz

Moderator Devschuur®

!litemod

Nee, zo werkt het absoluut niet. Wat je nu aan het opvragen bent is het cartesisch product aangezien je op geen enkele manier aangeeft op wat voor manier een record in de ene tabel aan de andere gekoppeld moet worden.

Ik raad je nogmaals aan om je eens wat meer in de theorie te gaan verdiepen voordat je verder gaat. Al je afgelopen tig topics gaan over dit project en telkens komt weer naar voren dat je met iets bezig bent waar je duidelijk nog niet aan toe bent.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • BSeB
  • Registratie: Juni 2001
  • Laatst online: 22-09-2025
Het is nu inderdaad weer gelukt, had wat dingen fout gedaan. Was ook alweer even geleden dat ik ermee bezig was geweest. heb het nu allemaal in 1 select staan ipv een join, union of een inner join.
Pagina: 1