Första sidan | Forum start | Logga in | Bli medlem |


En SQL fråga

Forumet för dej som vill diskutera MySQL, Oracle och andra databaser till UNIX / Linux.

En SQL fråga

Inläggav klein 17 mars 2007, 23:04

Har följande fråga i SQL

Kod: Markera allt

select count(p.products_id) as total from products_description pd, products p left join manufacturers m on p.manufacturers_id = m.manufacturers_id, products_to_categories p2c left join specials s on p.products_id = s.products_id where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '1' and p2c.categories_id = '4514'


Och får felmeddlandet "Unknown column 'p.products_id' in 'on clause.

Vad betyder on clause?
klein
 
Inlägg: 4883
Blev medlem: 1 april 2002, 02:00
Ort: 43,41,41N, 7,15,47Ö

Inläggav mog 18 mars 2007, 01:34

Det betyder (om jag ser rätt i geggamojjan du visar) att den inte hittar products.products_id på det sätt som du vill.
Du hämtar grejer från många olika tabeller till höger och vänster och kors och tvärs, men du hade nog klarat dig utmärkt med endast en eller två tabeller..

Ett bra tips är att skriva det ordentligare och avgränsa "sqlkoden" från tabell och kolumnnamnen.

ex:
Kod: Markera allt
SELECT COUNT(a.x) AS total
FROM tabell1 AS a
LEFT JOIN tabell2 AS b ON a.c = b.c
WHERE a.t = 10


"on clause" betyder att din JOIN inte fungerar.. t.ex. om inte b.c hade hittats i mitt exempel ovan. (LEFT JOIN tabell2 AS b ON a.c = b.c)
Användarvisningsbild
mog
 
Inlägg: 1578
Blev medlem: 2 april 2002, 02:00
Ort: gbg

Inläggav mog 18 mars 2007, 01:43

Sålänge inte produkterna har olika id om det är olika språk så:

edit: tog bort det första alternativet.. vart nog lite fel där..

Kod: Markera allt
SELECT COUNT(a.products_id) AS total
FROM products AS a
LEFT JOIN products_to_categories AS b ON a.products_id = b.products_id
WHERE (a.products_status, b.categories_id) = (1, 4514)
GROUP BY a.products_id


LEFT JOIN kan bytas mot CROSS JOIN alt. , men resultatet blir c:a det samma på leknivå.
Användarvisningsbild
mog
 
Inlägg: 1578
Blev medlem: 2 april 2002, 02:00
Ort: gbg

Inläggav klein 18 mars 2007, 06:48

Problemet är att den där geggamoja producerad av OsCommerce, jag försöker bara få grejerna att fungera..

mog skrev:Det betyder (om jag ser rätt i geggamojjan du visar) att den inte hittar products.products_id på det sätt som du vill.
Du hämtar grejer från många olika tabeller till höger och vänster och kors och tvärs, men du hade nog klarat dig utmärkt med endast en eller två tabeller..

Ett bra tips är att skriva det ordentligare och avgränsa "sqlkoden" från tabell och kolumnnamnen.

ex:
Kod: Markera allt
SELECT COUNT(a.x) AS total
FROM tabell1 AS a
LEFT JOIN tabell2 AS b ON a.c = b.c
WHERE a.t = 10


"on clause" betyder att din JOIN inte fungerar.. t.ex. om inte b.c hade hittats i mitt exempel ovan. (LEFT JOIN tabell2 AS b ON a.c = b.c)
klein
 
Inlägg: 4883
Blev medlem: 1 april 2002, 02:00
Ort: 43,41,41N, 7,15,47Ö

Inläggav mog 18 mars 2007, 15:00

Varför skulle osC ha med sql-kod som inte fungerar med dom tabeller och kolumner som dom använder?

Känns som du vill modifiera något.
Användarvisningsbild
mog
 
Inlägg: 1578
Blev medlem: 2 april 2002, 02:00
Ort: gbg

Inläggav klein 19 mars 2007, 11:10

Jag håller på och skriver ett import program OsC, då skiter sej OSC ibland

mog skrev:Varför skulle osC ha med sql-kod som inte fungerar med dom tabeller och kolumner som dom använder?

Känns som du vill modifiera något.
klein
 
Inlägg: 4883
Blev medlem: 1 april 2002, 02:00
Ort: 43,41,41N, 7,15,47Ö


Återgå till Databas forum

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster