[mysql] 2 tabellen joinen

Pagina: 1
Acties:

  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
allo,

ik ben bezig met 2 databases, die ik nu wil koppelen.

in de 1e (relaties) staan allemaal fields, en die kan ik zonder problemen binnenhalen.
in de 2e (updates) staan ook allemaal velden, maar daar wil ik r maar een van hebben (int, waarde is 0 of 1).

hoe doe ik dit ?

ik heb het geprobeerd zonder een where, maar dan weet ie niet van welke row ie die 0 of 1 moet halen.
als ik dan een where erbij opgeef zie ik alleen de row's waar de status 1 is.

iemand :?

tnx :P

edit:

voor duidelijkere uitleg: zie verder naar beneden

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

?

aleen 1 colomn: SELECT colom FROM table
alleen 1 rij: SELECT * FROM table WHERE id=id_ding

  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
Op zondag 14 oktober 2001 12:20 schreef Timpie2000 het volgende:
?

aleen 1 colomn: SELECT colom FROM table
alleen 1 rij: SELECT * FROM table WHERE id=id_ding
nee, zo bedoel ik t nie.
ik zal t ff duidelijker proberen te maken met code en verhaaltje.

de code:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
$result = mysql_query("SELECT
    relaties.ID,
    relaties.relnr,
    relaties.relnaam,
    updates.status
    FROM relaties, updates
    WHERE updates.relid = relaties.ID
    ORDER BY relnaam");
?>

maar dan selecteert 'ie alleen de row's die ook een update op hun naam hebben staan (die dus in de updates tabel staan).

mn verhaaltje:
ik heb een relaties tabel, en die list ik dus met bovenstaande SELECT query.
ik wil ook een kolom in de tabel die r uit komt waar staat of r updates zijn voor die relatie.

hij pakt dus de bedrijfsnaam+andere nodige info uit de relaties tabel.
uit de updates tabel moet ie kijken of r iets instaat waar de status 0 is (0=nog niet opgeloste update).
ik select dus de updates.status mee, en zeg dat relaties.ID = updates.relid .
dan pakt ie alleen maar de relaties die ook een update hebben, en das niet de bedoeling, hij moet alle relaties pakken, en zeggen of r updates in de andere tabel staan of niet.

snappez-vous ?

tnx alvast ! :)

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Op zondag 14 oktober 2001 12:32 schreef cest_moi-le_roi het volgende:

uit de updates tabel moet ie kijken of r iets instaat waar de status 0 is (0=nog niet opgeloste update).
ik select dus de updates.status mee, en zeg dat relaties.ID = updates.relid .
dan pakt ie alleen maar de relaties die ook een update hebben, en das niet de bedoeling, hij moet alle relaties pakken, en zeggen of r updates in de andere tabel staan of niet.
Ik zou voor een LEFT JOIN gaan:
code:
1
2
3
4
5
6
7
8
9
10
<? 
$result = mysql_query("SELECT
    relaties.ID,
    relaties.relnr,
    relaties.relnaam,
    updates.status
    FROM relaties
    LEFT JOIN updates ON updates.relid = relaties.ID
    ORDER BY relnaam");
?>

Zo pakt hij alle relaties en je kan aan de kolom updates.status zien of er nog updates zijn.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
Op zondag 14 oktober 2001 12:57 schreef bigtree het volgende:

[..]

Ik zou voor een LEFT JOIN gaan:
code:
1
2
3
4
5
6
7
8
9
10
<? 
$result = mysql_query("SELECT
    relaties.ID,
    relaties.relnr,
    relaties.relnaam,
    updates.status
    FROM relaties
    LEFT JOIN updates ON updates.relid = relaties.ID
    ORDER BY relnaam");
?>

Zo pakt hij alle relaties en je kan aan de kolom updates.status zien of er nog updates zijn.
nu krijg ik t volgende:
de relaties die meer dan 1 update op hun naam hebben staan staan r ook meerdere keren in.

hij moet dus voor elke relatie een row neerzetten, en dan erin óf er updates zijn, niet hoeveel (dus niet meerdere rows met hetzelfde relatienummer (relid)).

iemand ?

  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
niemand ? :'(

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 16-09 21:52
Op zondag 14 oktober 2001 18:14 schreef cest_moi-le_roi het volgende:
niemand ? :'(
sorry, nee >:)

Verbouwing


  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
Op zondag 14 oktober 2001 18:20 schreef DinoRaptor het volgende:

[..]

sorry, nee >:)
flauw ;( :P

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

ik heb je topictitel iets minder onduidelijk gemaakt.

  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
Op zondag 14 oktober 2001 18:29 schreef ACM het volgende:
ik heb je topictitel iets minder onduidelijk gemaakt.
tnx, wist niet wat joinen was (nog steeds niet helemaal..) :P

edit:

maar weet nu nog steeds niet hoe ik het bovenstaande oplos :?
dus dat ik maar een relatie zie, ipv meerdere..

  • Paul
  • Registratie: September 2000
  • Laatst online: 11:40
Op zondag 14 oktober 2001 18:29 schreef cest_moi-le_roi het volgende:

[..]

tnx, wist niet wat joinen was (nog steeds niet helemaal..) :P

edit:

maar weet nu nog steeds niet hoe ik het bovenstaande oplos :?
dus dat ik maar een relatie zie, ipv meerdere..
SQL is al ff geleden, maar was er niet zoiets als SORT BY UNIQUE relatie.ID ?? Iemand?

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-09 22:25

Janoz

Moderator Devschuur®

!litemod

Kun je geen count op de updates gebruiken en group by relatieID doen?

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


  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
Op zondag 14 oktober 2001 19:22 schreef Janoz het volgende:
Kun je geen count op de updates gebruiken en group by relatieID doen?
[mysql-newbie-modus]
:?
[/mysql-newbie-modus]

Verwijderd

kleine aanpassing maar nodig:

$result = mysql_query("SELECT
relaties.ID,
relaties.relnr,
relaties.relnaam,
max(updates.status)
FROM relaties
LEFT JOIN updates ON updates.relid = relaties.ID
ORDER BY relnaam
group by relaties.ID");
?>

geeft een null indien geen status, en anders de hoogste

  • nrg
  • Registratie: April 2001
  • Laatst online: 06:04
Op zondag 14 oktober 2001 21:32 schreef arthur_v het volgende:
kleine aanpassing maar nodig:

$result = mysql_query("SELECT
relaties.ID,
relaties.relnr,
relaties.relnaam,
max(updates.status)
FROM relaties
LEFT JOIN updates ON updates.relid = relaties.ID
ORDER BY relnaam
group by relaties.ID");
?>

geeft een null indien geen status, en anders de hoogste
Fout bij het uitvoeren van query:
You have an error in your SQL syntax near 'GROUP BY relaties.ID' at line 9
;(

m'n volledige SELECT syntax nu:
code:
1
2
3
4
5
6
7
8
9
$result = mysql_query("SELECT
    relaties.ID,
    relaties.relnr,
    relaties.relnaam,
    updates.status
    FROM relaties
    LEFT JOIN updates ON updates.relid = relaties.ID
    ORDER BY relnaam
    GROUP BY relaties.ID");

wat doe ik nou weer fout :? :'(

  • DiSiLLUSiON
  • Registratie: September 2000
  • Laatst online: 30-05 14:58
Je zegt in je eerste post dat je 2 databases wilt koppelen. Dat kan zowiezow niet met MySQL. Als je 2 tabellen wilt koppelen, en een LEFT JOIN voldoet niet, probeer dan een RIGHT JOIN? ;)

edit: laatmaar.. toen ik dit postte stond er haast nog geen reactie in dit topic :D

Verwijderd

Oops, sorry,

Eerst: Group by
Dan: Order by

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Volgens mij moet je eerst het GROUP BY stuk doen en dan pas het ORDER BY, ORDER BY moet altijd het laatste dacht ik.
Arthur was sneller ;)
Pagina: 1