I can't make out what you are doing from your question, as it is not formatted well.
I have reformatted it so that it looks like a proper query, and made some changes to improve readability.
SELECT t.NAME, t.TYPE, c.DAY_PRICE,
c.REGISTRATION_NUMBER, a.NAME, b.NAME`
FROM CAR c
JOIN CAR_TYPE t ON t.ID = c.CAR_TYPE_ID
JOIN BRANCH b ON b.ID = c.BRANCH_ID
JOIN BRANCH_ADDRESS ba ON ba.BRANCH_ID = b.ID
JOIN AGENCY a ON a.ID = b.ID
WHERE ba.CITY_NAME = 'Stockholm'
And c.ID NOT IN
(SELECT CAR_ID
FROM BOOKING
WHERE PICKUP_DATE < '2013-01-01'
AND RETURN_DATE > '2013-12-12')
if this is SQL server, then the statement to cerate a basic (without error handling) stored proc would be
Create Procedure dbo.FetchCarData -- or whatever you want to name it
@firstDate DateTime,
@lastDate DateTime,
@country varChar(50)
As
SELECT t.NAME, t.TYPE, c.DAY_PRICE,
c.REGISTRATION_NUMBER, a.NAME, b.NAME`
FROM CAR c
JOIN CAR_TYPE t ON t.ID = c.CAR_TYPE_ID
JOIN BRANCH b ON b.ID = c.BRANCH_ID
JOIN BRANCH_ADDRESS ba ON ba.BRANCH_ID = b.ID
JOIN AGENCY a ON a.ID = b.ID`
WHERE ba.CITY_NAME = @country
And c.ID NOT IN
(SELECT CAR_ID
FROM BOOKING
WHERE PICKUP_DATE < @firstDate
AND RETURN_DATE > @lastDate )
in MySQL I think it would look like this...
Create Procedure FetchCarData( -- or whatever you want to name it
@firstDate DateTime,
@lastDate DateTime,
@country varChar(50))
Begin
SELECT t.NAME, t.TYPE, c.DAY_PRICE,
c.REGISTRATION_NUMBER, a.NAME, b.NAME`
FROM CAR c
JOIN CAR_TYPE t ON t.ID = c.CAR_TYPE_ID
JOIN BRANCH b ON b.ID = c.BRANCH_ID
JOIN BRANCH_ADDRESS ba ON ba.BRANCH_ID = b.ID
JOIN AGENCY a ON a.ID = b.ID`
WHERE ba.CITY_NAME = @country
And c.ID NOT IN
(SELECT CAR_ID
FROM BOOKING
WHERE PICKUP_DATE < @firstDate
AND RETURN_DATE > @lastDate )
End