Kevin Fricke wrote:
Hello all....new to the list...having a bit of an issue here. I have a reservations table that is linked to three separate tables, food, packages and options. A reservation can have multiple food options, packages and options attached to it. I am trying to run a query that will pull all of these out in the query without all of the duplicate records. Is this possible? Can I pull a select list into one query result field. For example a reservation may look like this: Reservation ID: 1 Client Name: Kevin Food ---------- Nachos Tacos Ice Cream Packages ---------- Live Music Casino Options ---------- Margarita Machine Bartender Do I have to run three queries to get the food, packages and options? I was hoping that this could be consolidated into one query. Thanks for the help!! Kevin
My first thought is, why do you want to do it in one query? Each table has data answering a different question, so separate queries make sense. If you want one list as otput, it should be trivial to have your app print the results as one list.
That said, we can get everything in one query by combining the three separate queries with a union. You didn't tell us your table structure, but it would look something like:
(SELECT name AS item FROM Food WHERE reservation_id = 1) UNION (SELECT name AS item FROM Packages WHERE reservation_id = 1) UNION (SELECT name AS item FROM Options WHERE reservation_id = 1); assuming you've already looked up the client's reservation_id. You'd get item ---------- Nachos Tacos Ice Cream Live Music Casino Margarita Machine BartenderHere's a more complex version where we look up the reservation_id on the fly, and label each item with its type:
(SELECT 'Food ' AS type, F.name AS item FROM Reservations R JOIN Food F ON R.id = F.reservations_id WHERE R.client = 'Kevin') UNION (SELECT 'Package' AS type, P.name AS item FROM Reservations R JOIN Packages P ON R.id = P.reservations_id WHERE R.client = 'Kevin') UNION (SELECT 'Option ' AS type, O.name AS item FROM Reservations R JOIN Options O ON R.id = O.reservations_id WHERE R.client = 'Kevin'); This should produce type item -------+------------------- Food Nachos Food Tacos Food Ice Cream Package Live Music Package Casino Option Margarita Machine Option BartenderYou get the idea: Your three separate queries can be combined with UNION, so long as the columns match up. See the manual for details <http://dev.mysql.com/doc/refman/5.0/en/union.html>.
Michael -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/suppressed
Mail converted by mhonarc 2.6.15
This archive provided courtesy of JSW4.NET, Internet Hosting Services for Small Business.