[MySQL] Unknown column, terwijl deze bestaat.

Pagina: 1
Acties:

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik krijg een foutmelding dat een kolom niet bestaat, terwijl deze er gewoon is en de tabel gewoon in de FROM lijst staat.

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT
planning_projects.name AS proj_name,
planning_shifts.name AS shift_name,
planning_shift_days.id AS shift_day,
GROUP_CONCAT(planning_regular_shifts.fk_pid) AS person_id
FROM
planning_projects,
planning_shifts,
planning_shift_days
LEFT JOIN
(planning_regular_shifts)
ON
planning_regular_shifts.fk_ps_id = planning_shifts.id AND
planning_regular_shifts.day = planning_shifts.day
GROUP BY
planning_shifts.day,
planning_shifts.name


De fout die ik krijg is
ERROR 1054 (42S22): Unknown column 'planning_shifts.id' in 'on clause'
Zoals je ziet staat planning_shifts gewoon in de FROM lijst, dus dat kan het probleem niet zijn lijkt mij. Ook bestaat de kolom id gewoon in de tabel planning_shifts. Een 'DESCRIBE planning_shifts' geeft het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
mysql> describe planning_shifts;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(8) unsigned  | NO   | PRI | NULL    | auto_increment |
| fk_pp_id   | int(4) unsigned  | NO   |     | 0       |                |
| fk_did     | int(4) unsigned  | NO   |     | 0       |                |
| name       | varchar(16)      | NO   |     |         |                |
| start_date | int(12) unsigned | NO   |     | 0       |                |
| end_date   | int(12) unsigned | NO   |     | 0       |                |
+------------+------------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
Ik heb werkelijk geen idee waar het fout gaat. Alle tabellen en kolommen kloppen. Ziet er iemand wat er fout gaat?

Ik ontken het bestaan van IE.


Verwijderd

zie hieronder ;)

[ Voor 96% gewijzigd door Verwijderd op 27-11-2006 11:00 ]


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Je definieert een join over de tabellen planning_shift_days en planning_regular_shifts op basis van het id uit de planning_shifts tabel? Dat gaat natuurlijk nooit werken, dat id bestaat inderdaad niet in deze join.

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:15

Dido

heforshe

Wat probeer je in hemelsnaam te joinen, en hoe?

Je wilt een cartesisch product over drie tabellen :X joinen met een vierde :?

Dat hij die kolom niet kan vinden snap ik wel, want je joint tabel A met tabel B, en refereert in de ON aan tabel C.

Daarnaast mis ik minimaal 1 kolom in je group by, maar die zal MySQL wel niet missen :X

[ Voor 15% gewijzigd door Dido op 27-11-2006 11:00 ]

Wat betekent mijn avatar?


  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
rrrandy schreef op maandag 27 november 2006 @ 10:58:
Je definieert een join over de tabellen planning_shift_days en planning_regular_shifts op basis van het id uit de planning_shifts tabel? Dat gaat natuurlijk nooit werken, dat id bestaat inderdaad niet in deze join.
Wat kan ik hieraan doen? Ik wil niet die tabellen in de JOIN zetten, omdat deze dan ook NULL geven als planning_regular_shifts geen resultaten geeft.
Dido schreef op maandag 27 november 2006 @ 10:59:
Wat probeer je in hemelsnaam te joinen, en hoe?

Je wilt een cartesisch product over drie tabellen :X joinen met een vierde :?

Dat hij die kolom niet kan vinden snap ik wel, want je joint tabel A met tabel B, en refereert in de ON aan tabel C.

Daarnaast mis ik minimaal 1 kolom in je group by, maar die zal MySQL wel niet missen :X
Er zijn vier tabellen. Alleen de vierde tabel kan soms geen resultaten hebben. Daarom staat alleen die tabel in de JOIN.

[ Voor 6% gewijzigd door cyberstalker op 27-11-2006 11:04 ]

Ik ontken het bestaan van IE.


  • vinnie1908
  • Registratie: September 2001
  • Laatst online: 14:37

vinnie1908

Appel != peer

Zoek eerst eens op "cartesisch product" en los dat eerst even op. Daarna kan je verder gaan kijken, wat je nu doet is echt niet je bedoeling en gaat ook zeker niet werken zoals je wilt.

"Sometimes I have a difficult time handling myself in social situations. I just start scampering around neurotically, frantically jumping all over guests. I think it all goes back to when I was raised in the wild by miniature schnauzers."


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:15

Dido

heforshe

Ik zou maar eens wat gaan nalezen over JOIN.

Jouw redenering om ze niet te gebruiken raakt namelijk kant noch wal.
Tik ook "Cartesian product" eens in in google ;)

Als je erachter bent wat JOIN's doen, kun je nog meer informatie over wat jij wilt vinden met de keywords LEFT en RIGHT :)

Wat betekent mijn avatar?


  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Oei, ik was inderdaad de WHERE clause vergeten in alle drukte met de join, erg stomme fout :X . Ik heb nu de volgende query, die uiteraard dezelfde fout geeft.

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
planning_projects.name AS proj_name,
planning_shifts.name AS shift_name,
planning_shift_days.id AS shift_day,
GROUP_CONCAT(planning_regular_shifts.fk_pid) AS person_id
FROM
planning_projects,
planning_shifts,
planning_shift_days
LEFT JOIN
(planning_regular_shifts)
ON
planning_regular_shifts.fk_ps_id = planning_shifts.id AND
planning_regular_shifts.day = planning_shifts.day
WHERE
planning_projects.id = planning_shifts.fk_pp_id AND
planning_shifts.id = planning_shift_days.fk_ps_id
GROUP BY
planning_shifts.day,
planning_shifts.name


Ik krijg hierbij dus nog steeds de fout:
code:
1
ERROR 1054 (42S22): Unknown column 'planning_shifts.id' in 'on clause'


Hoe los ik dit op? Als ik de WHERE clauses bij de ON clause zet wordt alles een LEFT JOIN en krijg ik ook de planning_shifts tabel niet wanneer er geen resultaten in planning_regular_shifts zijn.

Ik ontken het bestaan van IE.


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 19:15

Dido

heforshe

Je joined op dit moment nog steeds tabel A met tabel B, op een kolom uit tabel C!

Zet e.e.a. nou eerst eens wat netter op (en gebruik aliases voor de leesbaargeid ;) )

SQL:
1
2
3
4
5
Select *
From tabel1 a 
     join tabel2 b on a.id=b.id
     join tabel3 c on b.id=c.id
left join tabel4 d on a.id=d.id;

Zoiets dus :)

Wat betekent mijn avatar?

Pagina: 1