Im trying to debug a really weird issue.
One of the parts of my database that used to work properly suddenty stopped to work. I have narrowed the problem to this:
First of all: Those are my databases
x
users: id(int), email(var) ..
calendar : id(int) , user_id(int)(fk->users(id))
calendar_field : id(int), text(text), rating(int), calendar_id(int)(fk-> calendar(id)), week_number(int)
This is their creation script:
USERS:
-- Table: public.users
-- DROP TABLE public.users;
CREATE TABLE public.users
(
id integer NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
email character varying(254) COLLATE pg_catalog."default" NOT NULL,
password character varying(60) COLLATE pg_catalog."default" NOT NULL,
refreshtoken character varying COLLATE pg_catalog."default",
birth_date date,
first_name character varying COLLATE pg_catalog."default",
second_name character varying COLLATE pg_catalog."default",
years_to_live integer,
register_date date,
death_date date,
weeks_to_live integer,
CONSTRAINT users_pkey PRIMARY KEY (id),
CONSTRAINT users_email_unique UNIQUE (email)
)
TABLESPACE pg_default;
ALTER TABLE public.users
OWNER to postgres;
CALENDAR:
-- Table: public.calendar
-- DROP TABLE public.calendar;
CREATE TABLE public.calendar
(
id integer NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
user_id integer,
CONSTRAINT calendar_pkey PRIMARY KEY (id),
CONSTRAINT "userId" FOREIGN KEY (user_id)
REFERENCES public.users (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE
)
TABLESPACE pg_default;
ALTER TABLE public.calendar
OWNER to postgres;
CALENDAR_FIELD
-- Table: public.calendar_field
-- DROP TABLE public.calendar_field;
CREATE TABLE public.calendar_field
(
id integer NOT NULL GENERATED BY DEFAULT AS IDENTITY ( INCREMENT 1 START 1 MINVALUE 1 MAXVALUE 2147483647 CACHE 1 ),
text text COLLATE pg_catalog."default",
rating integer,
calendar_id integer NOT NULL,
week_number integer,
CONSTRAINT "CalendarField_pkey" PRIMARY KEY (id),
CONSTRAINT "calendarField_calendar_id_fk_calendar_id" FOREIGN KEY (calendar_id)
REFERENCES public.calendar (id) MATCH SIMPLE
ON UPDATE CASCADE
ON DELETE CASCADE
)
TABLESPACE pg_default;
ALTER TABLE public.calendar_field
OWNER to postgres;
Well whats the issue there? My programme generates the following data in the database:
users
- id: 58
- email: email1@email.com
- password: password
- refreshtoken: hash .
- birth_date: 2008-08-08
- first_name: first
- second_name: second
- years_to_live: 100
- register_date: 2020-05-12
- death_date: 2097-12-08
- weeks_to_live 5218
calendar:
- id: 64
- user_id: 58
calendar_field
-id: 462640
-text: notext
-rating: 0
-calendar_id: 64
-week_number: 1
SELECT * from calendar_field cf join calendar c on (c.user_id = cf.calendar_id) where week_number='1' and user_id='58';
It returns no rows, when I perfectly remember how it used to return some rows
Advertisement
Answer
The join appears to be incorrect.
Rather than:
c.user_id = cf.calendar_id
it looks like it needs to be:
c.id = cf.calendar_id
This way, the values will match, given the data you provided.