Question

I need to execute the following query:

SELECT (COL1,COL2, ClientID)
FROM Jobs
Union
SELECT (ClientID,COL2,COL3)
FROM Clients WHERE (the ClientID= ClientID my first select)

I'm really stuck, I've been trying joins and unions and have no idea how to do this.

*EDIT*Query to create jobs table

CREATE TABLE IF NOT EXISTS `jobs` (
  `JobID` int(11) NOT NULL AUTO_INCREMENT,
  `Title` varchar(32) NOT NULL,
  `Trade` varchar(32) NOT NULL,
  `SubTrade` varchar(300) NOT NULL,
  `Urgency` tinyint(4) NOT NULL,
  `DatePosted` int(11) NOT NULL,
  `Description` varchar(500) NOT NULL,
  `Photo` longblob,
  `Photo2` longblob,
  `Address` varchar(600) NOT NULL,
  `ShowAddress` tinyint(4) NOT NULL,
  `ShowExact` tinyint(4) NOT NULL,
  `JobStatus` tinyint(4) NOT NULL,
  `Longitude` double NOT NULL,
  `Latitude` double NOT NULL,
  `ClientID` int(11) NOT NULL,
  `TradesmanID` int(11) DEFAULT NULL,
  PRIMARY KEY (`JobID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=171 ;

and query to create clients table is

CREATE TABLE IF NOT EXISTS `clients` (
  `ClientID` int(11) NOT NULL AUTO_INCREMENT,
  `FName` varchar(32) NOT NULL,
  `SName` varchar(32) NOT NULL,
  `Email` varchar(32) NOT NULL,
  `HomePhone` int(11) NOT NULL,
  `Mobile` varchar(30) NOT NULL,
  `Address` varchar(100) NOT NULL,
  `County` varchar(32) NOT NULL,
  `PostCode` varchar(32) NOT NULL,
  `UserName` varchar(32) NOT NULL,
  `Password` varchar(32) NOT NULL,
  `NotificationID` varchar(255) NOT NULL,
  PRIMARY KEY (`ClientID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=96 ;
Was it helpful?

Solution

  SELECT 
Clients.ClientID
,Clients.NotificationID
,Clients.Email
,Clients.Mobile
,Clients.HomePhone 
,Jobs.JobID
,Jobs.Title
,Jobs.Trade
,Jobs.Address               AS JobAddress
,Jobs.Urgency
,Jobs.DatePosted
,Jobs.Description
,Jobs.Photo
,Jobs.Photo2
,Jobs.ShowAddress
,Jobs.ShowExact
,Jobs.JobStatus
    ,Jobs.TradesmanID
    ,Jobs.Longitude
    ,Jobs.Latitude

 FROM
    Clients
 INNER JOIN 
    Jobs
        on Clients.ClientId = Jobs.ClientId

OTHER TIPS

How about this? There is a bit of duplication i.e. the select clause in the second union replications the first statement but it will work.

SELECT COL1,COL2, ClientID
FROM Jobs
Union
SELECT ClientID,COL2,COL3
FROM Clients WHERE (Select ClientID FROM Jobs)

try this:

     SELECT c.ClientID, c.COL2, c.COL3, x.col1
        FROM Clients c inner join 
                         (select clientId, 
                                 min(col1) as col1 
                          from jobs 
                          group by clientId) x
           on c.clientId = x.clientId
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top