If you want to join a table more than once, you need to refer to it AS something else.

select sum(PlaceNo)
from boxes
inner join car using (boxID)
inner join load using (TravelID)
left outer join load AS Load2 on car.BoxNo=Load2.BoxNo
Where load.TravelID=1 AND Load2.BoxNo is null


On Sep 20, 2005, at 2:40 AM, RAPPAZ Francois wrote:

Hi all
with Mysql 3.23 I would like to find missing values in the following situation:

1) table boxes: describes kind of boxes differing by how many items I can put in.

Primary key is BoxID

boxID +  Places
A     +   1
B     +   3
C     +   5

2) table car describes how I can put some boxes on a car for a journey

Primary Key is composed of TravelID, BoxNo
BoxNo is auto_increment, and start at 1 for each new travel

TravelID + BoxID + BoxNo
   1     +   A   +  1
   1     +   A   +  2
   1     +   B   +  3
   2       +   A   +  1
   2     +   B   +  2
   2     +   C   +  3


3) table load describes how items can be placed in the boxes once a car has been monted with boxes

Primary Key is composed of TravelID, BoxNo, PlaceNo
PlaceNo is auto_increment, and start at 1 for each new Box beeing load (it's just here to make a primary key)

TravelID + BoxNo + PlaceNo + ItemName
    1    +   1   +   1     +   itemName1
    2    +   2   +   1     +   itemName2
    2    +   2   +   2     +   itemName3


I want to make a query to get how much free places there is for a given travel (ie how much places have been prepared in table car that are not occupied in table load)

I would like to get this kind of query working

select sum(PlaceNo)
from boxes
inner join car using (boxID)
inner join load using (TravelID)
left outer join load on car.BoxNo=load.BoxNo
Where load.TravelID=1 AND load.BoxNo is null

but this query does not work because I have a duplicate table name (load). Left join would be possible if BoxNo was unique for the whole table load, but is there a way to use left join here ?

This query works when there is one record in load for a given travel

select sum(PlaceNo)
from boxes
inner join car using (boxID)
where car.TravelID=1 AND car.BoxNo not in (select BoxNo
    from load
    where load.TravelID=1)

but when the subquery return null, the main query return null to when it should return the total of free places...
How could I correct this ?

Thanks in advance

François

François Rappaz

Centre de documentation de la Faculté des Sciences
Université de Fribourg
DokPe - Dokumentationszentrum der Naturwissenschaftlichen Fakultät Universität
Freiburg
Pérolles CH-1700 Fribourg Switzerland
http://www.unifr.ch/dokpe/
Tel.: 41 (0)26 300 92 60
Fax.: 41 (0)26 300 97 30

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/mysql? [EMAIL PROTECTED]




--
Brent Baisley
Systems Architect
Landover Associates, Inc.
Search & Advisory Services for Advanced Technology Environments
p: 212.759.6400/800.759.0577



--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to