2012-05-16 4 views
0

Я очень ценю любые отзывы и время, которое у вас есть для меня.PHP MYSQL - Mutliple Queries and Outputs

Я работаю на странице PHP, которая запрашивает базу данных с таблицей1 и кажется застрявшей. SQL не мой сильный костюм, поэтому я ищу некоторую помощь. Я работаю на PHP с подключенным MYSQL.

Database

У меня есть таблицы «Продукт», который содержит:

1ID, 2Product Description, 3Price, 4Category, 5Size, 6Price-Category 

Я хотел бы выполнить запрос, чтобы определить, какие продукты соответствуют друг другу по размеру (точное совпадение) и цена- Catgory (равный или выше). Поэтому я думал о следующем процессе:

A - run queries to identify different products by Category (one for Category A, one for Category B) 
B - compare query A and B by Size and Price-Category 
C - Display Results by ID for Category A 

Я хотел бы выводить результат за ID моего запроса продукта:

1ID|2Product Description|3Price|4Category|5Size|6Price-Category|7Query B Details 
1 Product    100 Cat  100 1    ID, Product. etc. 
                   ID, Product. etc. 
                   ID, Product. etc. 

2 Product    200 Cat  100 2    ID, Product. etc. 
                   ID, Product. etc. 
                   ID, Product. etc. 

Любые идеи о том, как я мог бы построить это?

Заранее благодарен!

кода я пытался до сих пор (я в настоящее время пытаюсь получить их из двух таблиц, но originnaly они были в одном !!!!)

$query = "SELECT betten.m3, betten.Shortcode, betten.CodePDT, betten.PVCons, betten.CAT, betten.size1, betten.size2, betten.m3, betten.SIZE, betten.PRICERANGE, som.CodePDT2, som.Shortcode2, som.PRICECLASS, som.PVCons2, som.CAT2, som.size1a, som.size2a, som.m3a, som.SIZETWO FROM betten LEFT JOIN som ON betten.m3 = som.m3a ORDER BY CodePDT "; 
     $result = mysql_query($query) or die(mysql_error()); 
     // Print out the contents of each row into a table 
     while($row = mysql_fetch_array($result)){ 
      echo "<tr><td>"; 
      echo $row['CodePDT']. "</td><td>".$row['Shortcode']. "</td><td>". $row['PVCons']."</td><td>". $row['CAT']. "</td><td>". $row['SIZE']. "</td><td>". $row['m3']."</td><td>". $row['PRICERANGE']. "</td><td>". $row['CodePDT2']. "</td><td>". $row['Shortcode2']. "</td><td>". $row['PVCons2']. "</td><td>". $row['CAT2']. "</td><td>". $row['SIZETWO']. "</td><td>". $row['m3a']. "</td><td>". $row['PRICECLASS']. "</td><td>"; 
      echo "</td></tr>"; 
     } 

UPDATE:

Это работает, excepts в GROUP_CONT , Без этого, я получаю результаты, но по строкам. С GROUP_CONT я получаю сообщение об ошибке «проверить инструкцию, которая соответствует вашей версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с«GROUP_CONCAT (som.S ....»

SELECT `betten`.*, `som`.* 
FROM betten 
    LEFT JOIN som ON betten.m3 = som.m3a  
    WHERE SIZE LIKE SIZETWO  
GROUP_CONCAT(som.Shortcode2) AS Dude 
    GROUP BY betten.CodePDT  
    ORDER BY CodePDT ASC 
+2

плз вставить код –

+0

да plese показать, что вы пробовали ... может быть, мы проведем вас .... –

+0

@Mian_Khurram_Ijaz: «PLZ» не использовать язык чата на SO. Пожалуйста, вставьте код. –

ответ

0

достигается за счет:

$query = ("SELECT 
    r.rangename as rRangename, /* Get Ranges from Rangetable */ 
    r.rangevalue as rRangevalue, 
    m.name as mName, /* Get Fields from main Products */ 
    m.Code as mCode, 
    m.Range as mRange, 
    SUBSTRING_INDEX(GROUP_CONCAT(f.productcode ORDER BY f.index_id ASC SEPARATOR ','),',',3) as fCodes, /* Get Fields from Cross Selling and list them seperatly */ 
    SUBSTRING_INDEX(GROUP_CONCAT(f.name ORDER BY f.index_id ASC SEPARATOR ','),',',3) as fNames, 
    SUBSTRING_INDEX(GROUP_CONCAT(f.range ORDER BY f.index_id ASC SEPARATOR ','),',',3) as fRanges 

FROM 
    crossproducts f 
JOIN /* Match main products with cross via m3 */ 
    mainproduct m 
ON 
    m.m3 = f.m3 
JOIN /* Match ranges and assign values for cross */ 
    ranges r 
ON 
    r.rangename = f.range 
JOIN /* Match ranges and assign values for main */ 
    ranges s 
ON 
    s.rangename = m.Range 
WHERE /* Only get Items that are equal or higher price range */ 
    r.rangevalue - s.rangevalue > -1 

GROUP BY /* And finally group them by main Product Code */ 
    m.Code;");