Toon posts:

van Access query naar MySQL query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik had een vraag over een query:
Hij komt zo uit ACCESS:
code:
1
2
3
4
5
6
SELECT transactie.datum, artikel.omschrijving, artikel.prijs
FROM klant 
INNER JOIN (transactie INNER JOIN artikel ON
        transactie.transactie_id = artikel.transactie_id) ON 
        klant.persoonid=transactie.persoonid
WHERE klant.persoonid=2;

Maar in MySQL krijg ik hem niet aan de gang. Het gaat er zegmaar om dat ik een overzicht krijg van alle aankopen(artikel.omschrijving) de prijs daarvan ( artikel.prijs ) en de datum dat deze transactie heeft plaatsgevonden (transactie.datum) er is nog een tabel klant waarbij ik het overzicht wil zien dus klant.persoonid=x.

BVD voor de hulp
Erwin

[edit]even code-tags gebruikt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op woensdag 05 juni 2002 19:31 schreef erwintap het volgende:

Maar in MySQL krijg ik hem niet aan de gang.
Kun je iets specifieker zijn? Wat lukt er niet? Krijg je een foutmelding, krijg je verkeerde gegevens ... (We hebben geen glazen bol.
BVD voor de hulp
Erwin
Uit de FAQ:
Wij tweakers doen elkaar permanent de groeten. Het is dus niet nodig om steeds ruimteverspillende "greetz [user]" of iets dergelijks onder je post te plakken.
Misschien helpt het als je ipv die syntax (die ik toch wel onduidelijk vind) met 'INNER JOIN' enzo, de 'gewone' syntax gebruikt?

https://fgheysels.github.io/


Verwijderd

Ben niet echt op de hoogte dus het kan een domme opmering zijn;

Maar kan MySQL dit soort 'joins' al aan?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op woensdag 05 juni 2002 19:44 schreef Glorfindel het volgende:
Maar kan MySQL dit soort 'joins' al aan?
Dat vroeg ik me ook al af. Ik dacht dat die 'INNER JOIN' stuff typisch Microsoft waren. Volgens mij behoren die keywords niet tot de ANSI.

https://fgheysels.github.io/


  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Probeer deze eens:
code:
1
2
3
4
SELECT T.Datum, A.Omschrijving, A.Prijs
FROM Klant K
INNER JOIN Transactie T ON K.PersoonID = T.PersoonID
INNER JOIN Artikel A ON T.Transactie_ID = A.Transactie_ID WHERE K.PersoonID = 2

Kan ook nog eens korter:
code:
1
2
3
SELECT T.Datum, A.Omschrijving, A.Prijs
FROM Transactie T
INNER JOIN Artikel A ON T.Transactie_ID = A.Transactie_ID WHERE T.PersoonID = 2

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Ik zou zeggen, probeer het eens zonder 'INNER JOIN' syntax:
zo dus:
code:
1
2
3
4
5
SELECT T.Datum, A.Omschrijving, A.Prijs
FROM   Klant K, Transactie T, Artikel A
WHERE  A.Transactie_ID = T.Transactie_ID
AND    T.Persoon_ID = K.Persoon_ID
AND    K.Persoon_ID = 2

* whoami is tegen de 'INNER JOIN' notatie. :r

https://fgheysels.github.io/


Verwijderd

Topicstarter
Excuses voor alle niet juiste posts , newbies maken wel eens fouten toch?

Volgens hebben jij wat betreft de 'dubbele innerjoin' gelijk en kan dat gewoon niet met MySQL.

Wat betreft de oplossingen die WhoAmI en robjansen aandragen krijg ik een result terug waarin de datum zegmaar bij elke aankoop hetzelfde is als van de eerste row. Duidelijker gedefineerd: bij elke aankoop staat nu dezelfde datum terwijl deze verschillende data hebben.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op woensdag 05 juni 2002 20:06 schreef erwintap het volgende:
Excuses voor alle niet juiste posts , newbies maken wel eens fouten toch?
Je hoeft je daarvoor niet te excuseren.
Wat betreft de oplossingen die WhoAmI en robjansen aandragen krijg ik een result terug waarin de datum zegmaar bij elke aankoop hetzelfde is als van de eerste row. Duidelijker gedefineerd: bij elke aankoop staat nu dezelfde datum terwijl deze verschillende data hebben.
Kun je even een schema plaatsen van uw tabellen en de relaties ertussen?

https://fgheysels.github.io/


Verwijderd

Inner Joins werken wél onder MySQL.

Kan je de foutmelding quoten die je krijgt?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Allereerst Whoami: Waarom ben jij tegen INNER JOINS?
Zijn die langzamer dan dan jouw oplossing?

Het is toch logisch dat je dezelfde datum krijgt.
Want je haalt van 1 Transactie alle artikelen op.
Dus alle artikelen die bij die transactie horen krijgen dezelfde datum.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op woensdag 05 juni 2002 20:25 schreef robjanssen het volgende:
Allereerst Whoami: Waarom ben jij tegen INNER JOINS?
Zijn die langzamer dan dan jouw oplossing?
Of ze trager zijn, dat weet ik zo niet. Ik vind de notatie gewoon onduidelijk.
Het is toch logisch dat je dezelfde datum krijgt.
Want je haalt van 1 Transactie alle artikelen op.
Dus alle artikelen die bij die transactie horen krijgen dezelfde datum.
Daar zeg je wat... :)

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dit is in iedergeval de link naar mijn ERD.

http://people.a2000.nl/erwintap/index.html

Innerjoins lukt wel maar volgens mij op de manier zoals beschreven bij start van topic.

De foutmelding is als volgt , bij het uitvoeren van de access query in mysql:

You have an error in your SQL syntac near '(transactie INNER JOIN artikel on transactie.transactie_id=artikel.transactie_id' at line2

Verwijderd

Topicstarter
robjansen, er zit duidelijk een kern van waarheid in je laatste opmerking.(oftewel ik ben gewoon dom) Het probleem is dan als volgt:

Ik wil een overzicht van alle transacties van 1 klant maar krijg dan bij elke transactie de data te zien van zijn eerste transactie.


maar in access werkt die query wel en krijg je een overzicht te zien van alle transacties van 1 klant (persoonid=2) met daarbij per transactie de datum.

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Gebruik je wel een rs.MoveNext()

Post anders ff je code.

Ik begrijp niet precies wat je bedoelt met dat je steeds dezelfde data te zien krijgt.

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Op woensdag 05 juni 2002 20:32 schreef erwintap het volgende:
Ik wil een overzicht van alle transacties van 1 klant maar krijg dan bij elke transactie de data te zien van zijn eerste transactie.
Hoezo?
Als je gewoon een query doet ala:
code:
1
2
3
select * from klant, transactie
where transactie.klantid = klant.klantid
and klant.klantid = ?

Dan moet je toch de gewenste lijst krijgen?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Code v/d queries nu waarbij probleem ontstaat:

String query ="SELECT transactie.datum,artikel.omschrijving,artikel.prijs FROM transactie,artikel,klant WHERE (transactie.persoonid = klant.persoonid) AND(transactie.transactie_id = artikel.transactie_id) AND klant.persoonid = '"+persoonid+"'";
resultSet = statement.executeQuery(query);
statement2 = connection.createStatement();

displayResultSet2(resultSet, resultSet2);

Dan komt de displayResultSet2:

private void displayResultSet2(ResultSet rs, ResultSet rs2) throws SQLException
{
Vector columnHeads = new Vector();
Vector rows = new Vector();

boolean moreRecords = rs.next();
boolean moreRecords2 = rs2.next();

try
{
/**** arno 25-05-2002 ****/

//de verkoopgegevens
ResultSetMetaData rsmd = rs.getMetaData();
for ( int i = 1; i<=rsmd.getColumnCount(); ++i)
columnHeads.addElement(rsmd.getColumnName(i) );
do
{
rows.addElement( getNextRow( rs, rsmd ));
}
while (rs.next() );
if ( moreRecords2 )
{
ResultSetMetaData rsmd2 = rs2.getMetaData();
do
{
rows.addElement( getNextRow( rs2, rsmd2 ));
}
while (rs2.next() );
}

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Kun je even [code ]-tags rond je code zetten, want zo is het echt niet leesbaar, en wil je je ook beperken tot enkel de relevante code?

https://fgheysels.github.io/


Verwijderd

Topicstarter
het probleem is trouwens te zien op:

http://people.a2000.nl/erwintap/java.html

de eerste twee rijen laten (3e buiten beschouwing laten ) dezelfde datum zien terwijl de tweede rij de datum "h2" zou moeten laten zien. Hoop dat het zo wat duidelijker wordt.
Pagina: 1