php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 4 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 26-06-2012, 12:26
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard Mysql Fehler

Hallo Community,
habe folgendes Problem ich bekomme folgende Fehlermeldung

Code:
1064 - You have an error in your SQL  syntax; check the manual that corresponds to your MySQL server version  for the right syntax to use near '' at line 9

select count(DISTINCT p.products_id) as total  from products_description pd                       join products_to_categories p2c                       join products p                        join (select p.products_id         from products p         join products_attributes pa on pa.products_id = p.products_id         join products_options_values pv on pv.products_options_values_id = pa.options_values_id         where pa.options_values_id in (4)         and pv.language_id = 2        
der zuständige code ist folgender:
Code:
  if (!empty($excluded_options))
    $excluded_options_condition = 'and po.products_options_id not in (' . $excluded_options . ')';
  // modify options filter join to connect to products_attributes instead of products
  $option_filter_join = str_replace('x.products_id = p.products_id', 'x.products_id = pa.products_id', $option_filter_join);
  // 1. get options and values for this catgory
  $filter_sql = 'select po.products_options_id options_id, 
                 po.products_options_name options_name,
                 pv.products_options_values_id options_values_id,
                 pv.products_options_values_name options_values_name,
                 count(pa.products_id) option_values_count
                 from '.TABLE_PRODUCTS_OPTIONS.' po
                 join '.TABLE_PRODUCTS_OPTIONS_VALUES_TO_PRODUCTS_OPTIONS.' pv2po on pv2po.products_options_id = po.products_options_id
                 join '.TABLE_PRODUCTS_OPTIONS_VALUES.' pv on pv.products_options_values_id = pv2po.products_options_values_id
                 join '.TABLE_PRODUCTS_ATTRIBUTES.' pa on pa.options_id = po.products_options_id and
                                                pa.options_values_id = pv.products_options_values_id
                 join '.TABLE_PRODUCTS_TO_CATEGORIES.' p2c on p2c.products_id = pa.products_id
               join '.TABLE_PRODUCTS.' p on p.products_id = pa.products_id
                 '. $option_filter_join .'
                 where p2c.categories_id = ' . $current_category_id . '
                 and po.language_id = '.(int) $_SESSION['languages_id'].'
                 and pv.language_id = '.(int) $_SESSION['languages_id'].'
                 and p.products_status = 1
                 '. $excluded_options_condition .'
                 group by 1, 2, 3, 4
                 order by 1, 4';
  // echo $filter_sql;
  $filter_query = xtDBquery($filter_sql);
Ich weiss einfach nicht mehr weiter .
MySQL Version: 5.5.9
5.2.17 (Zend: 2.2.0)

Wäre über jede Hilfestellung dankbar !!!

lg eleven-seven
Mit Zitat antworten
  #2 (permalink)  
Alt 26-06-2012, 12:33
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Wenn das in der Fehlermeldung die komplette Query ist – dann machst du wohl diese Klammer
Code:
join (select p.products_id         from products p   …
nirgends mehr zu.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 26-06-2012, 12:48
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

wenn ich nur wüsste wo ??

habe mal den filter_sql per echo ausgeben lassen mit diesem Ergebnis:
Zitat:
select po.products_options_id options_id, po.products_options_name options_name, pv.products_options_values_id options_values_id, pv.products_options_values_name options_values_name, count(pa.products_id) option_values_count from products_options po join products_options_values_to_products_options pv2po on pv2po.products_options_id = po.products_options_id join products_options_values pv on pv.products_options_values_id = pv2po.products_options_values_id join products_attributes pa on pa.options_id = po.products_options_id and pa.options_values_id = pv.products_options_values_id join products_to_categories p2c on p2c.products_id = pa.products_id join products p on p.products_id = pa.products_id join (select p.products_id from products p join products_attributes pa on pa.products_id = p.products_id join products_options_values pv on pv.products_options_values_id = pa.options_values_id where pa.options_values_id in (4) and pv.language_id = 2 group by 1 having count(p.products_id) = (select count(products_options_values_id) from products_options_values where language_id = 2 and products_options_values_id in (4))) x on x.products_id = pa.products_id where p2c.categories_id = 1 and po.language_id = 2 and pv.language_id = 2 and p.products_status = 1 group by 1, 2, 3, 4 order by 1, 4
eleven-seven
Mit Zitat antworten
  #4 (permalink)  
Alt 26-06-2012, 13:48
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

Hier nochmals die Orginaldatei.
Der Fehler kommt wenn ich eine Option auswähle.

eleven-seven
Angehängte Dateien
Dateityp: php default.php (23,4 KB, 48x aufgerufen)
Mit Zitat antworten
  #5 (permalink)  
Alt 26-06-2012, 14:18
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Es könnte helfen, wenn du die Query mal vernünftig formatierst. So guckt sich das doch niemand an.

PHP-Code spielt an dieser Stelle jedenfalls keine Rolle. Du hast ja einen MySQL-Fehler.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #6 (permalink)  
Alt 26-06-2012, 14:40
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

Sorry
bin auch jetzt schon stück weiter, die Fehlermeldung bezog sich auf diesen Part hier.
HTML-Code:
// build filter sql to use in product queries and dropdown calculation as additional join part
    if (!empty($option_filter_ids)) {  
      $option_filter_join = 'join (select p.products_id
        from '.TABLE_PRODUCTS.' p
        join '.TABLE_PRODUCTS_ATTRIBUTES.' pa on pa.products_id = p.products_id
        join '.TABLE_PRODUCTS_OPTIONS_VALUES.' pv on pv.products_options_values_id = pa.options_values_id
        where pa.options_values_id in (' . $option_filter_ids . ')
        and pv.language_id = '.(int) $_SESSION['languages_id'].'
        group by 1
        having count(p.products_id) = (select count(products_options_values_id) 
                                          from '.TABLE_PRODUCTS_OPTIONS_VALUES.'
                                          where language_id = '.(int) $_SESSION['languages_id'].'
                                     and products_options_values_id in (' . $option_filter_ids . '))) x on x.products_id = p.products_id';
    }
ein echo dieses Querys ergibt :
HTML-Code:
join (select p.products_id         from products p         join products_attributes pa on pa.products_id = p.products_id         join products_options_values pv on pv.products_options_values_id  = pa.options_values_id         where pa.options_values_id in (3,5,1)         and pv.language_id = 2         group by 1         having count(p.products_id) = (select  count(products_options_values_id)                                            from products_options_values                                           where language_id = 2                                      and products_options_values_id in (3,5,1))) x on x.products_id  = p.products_idselect p.products_fsk18, p.products_shippingtime,  p.products_model, p.products_ean, pd.products_name,                       m.manufacturers_name, p.products_quantity,  p.products_image, p.products_weight, pd.products_short_description,                       pd.products_description, p.products_id,  p.manufacturers_id, p.products_price, p.products_vpe,                       p.products_vpe_status, p.products_vpe_value,  p.products_discount_allowed, p.products_tax_class_id                       from products_description pd                       join products_to_categories p2c                       join products p                        join (select p.products_id         from products p         join products_attributes pa on pa.products_id = p.products_id         join products_options_values pv on pv.products_options_values_id  = pa.options_values_id         where pa.options_values_id in (3,5,1)         and pv.language_id = 2         group by 1         having count(p.products_id) = (select  count(products_options_values_id)                                            from products_options_values                                           where language_id = 2                                      and products_options_values_id in (3,5,1))) x on x.products_id  = p.products_id                       left join manufacturers m on p.manufacturers_id =  m.manufacturers_id                       where p.products_status = '1'                       and p.products_id = p2c.products_id                       and pd.products_id = p2c.products_id                                                                                                  and pd.language_id = '2'                       and p2c.categories_id = '1' ORDER BY  p.products_price ASC
gruß eleven-seven

Geändert von eleven-seven (26-06-2012 um 14:43 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 26-06-2012, 14:56
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Nochmals, bitte formatieren!

PHP-Code ist mittelmäßig uninteressant. Der Parser ist dafür da, den Code zu parsen. Das müssen nicht wir machen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #8 (permalink)  
Alt 26-06-2012, 15:09
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

HTML-Code:
join (select p.products_id
        from products p
        join products_attributes pa on pa.products_id = p.products_id
        join products_options_values pv on pv.products_options_values_id = pa.options_values_id
        where pa.options_values_id in (3,5,1)
        and pv.language_id = 2
        group by 1
        having count(p.products_id) = (select count(products_options_values_id) 
                                          from products_options_values
                                          where language_id = 2
                                     and products_options_values_id in (3,5,1))) x on x.products_id = p.products_id1
Mit Zitat antworten
  #9 (permalink)  
Alt 26-06-2012, 15:15
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Fehlermeldung ist unverändert?
Wo ist der Anfang der Query?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #10 (permalink)  
Alt 26-06-2012, 15:24
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

Hallo Tobiaz,
ja selbe Fehlermeldung!
Das wa die komplette ausgabe der $option_filter_join

gruß
Mit Zitat antworten
  #11 (permalink)  
Alt 26-06-2012, 15:25
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Dein Join ist sehr komplex. Es wäre hilfreich, wenn du alle Informationen auf einmal präsentierst. Nochmals, der zusammenhang mit PHP ist ja erstmal irrelevant. Die Query muss erstmal eigenständig lauffähig sein.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #12 (permalink)  
Alt 26-06-2012, 15:57
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

So ich versuche es die relevanten querys hier darzustellen

$listing_sql
HTML-Code:
select p.products_fsk18, p.products_shippingtime, p.products_model, p.products_ean, pd.products_name,
                      m.manufacturers_name, p.products_quantity, p.products_image, p.products_weight, pd.products_short_description,
                      pd.products_description, p.products_id, p.manufacturers_id, p.products_price, p.products_vpe,
                      p.products_vpe_status, p.products_vpe_value, p.products_discount_allowed, p.products_tax_class_id
                      from products_description pd
                      join products_to_categories p2c
                      join products p 
                      join (select p.products_id
        from products p
        join products_attributes pa on pa.products_id = p.products_id
        join products_options_values pv on pv.products_options_values_id = pa.options_values_id
        where pa.options_values_id in (3,5,1)
        and pv.language_id = 2
        group by 1
        having count(p.products_id) = (select count(products_options_values_id) 
                                          from products_options_values
                                          where language_id = 2
                                     and products_options_values_id in (3,5,1))) x on x.products_id = p.products_id
                      left join manufacturers m on p.manufacturers_id = m.manufacturers_id
                      where p.products_status = '1'
                      and p.products_id = p2c.products_id
                      and pd.products_id = p2c.products_id
                      
                                                   
                      and pd.language_id = '2'
                      and p2c.categories_id = '1' ORDER BY p.products_price ASC
$filter_sql

HTML-Code:
select po.products_options_id options_id, 
                 po.products_options_name options_name,
                 pv.products_options_values_id options_values_id,
                 pv.products_options_values_name options_values_name,
                 count(pa.products_id) option_values_count
                 from products_options po
                 join products_options_values_to_products_options pv2po on pv2po.products_options_id = po.products_options_id
                 join products_options_values pv on pv.products_options_values_id = pv2po.products_options_values_id
                 join products_attributes pa on pa.options_id = po.products_options_id and
                                                pa.options_values_id = pv.products_options_values_id
                 join products_to_categories p2c on p2c.products_id = pa.products_id
               join products p on p.products_id = pa.products_id
                 join (select p.products_id
        from products p
        join products_attributes pa on pa.products_id = p.products_id
        join products_options_values pv on pv.products_options_values_id = pa.options_values_id
        where pa.options_values_id in (3,5,1)
        and pv.language_id = 2
        group by 1
        having count(p.products_id) = (select count(products_options_values_id) 
                                          from products_options_values
                                          where language_id = 2
                                     and products_options_values_id in (3,5,1))) x on x.products_id = pa.products_id
                 where p2c.categories_id = 1
                 and po.language_id = 2
                 and pv.language_id = 2
                 and p.products_status = 1
                 
                 group by 1, 2, 3, 4
                 order by 1, 4
$option_filter_join
HTML-Code:
join (select p.products_id
        from products p
        join products_attributes pa on pa.products_id = p.products_id
        join products_options_values pv on pv.products_options_values_id = pa.options_values_id
        where pa.options_values_id in (3,5,1)
        and pv.language_id = 2
        group by 1
        having count(p.products_id) = (select count(products_options_values_id) 
                                          from products_options_values
                                          where language_id = 2
                                     and products_options_values_id in (3,5,1))) x on x.products_id = pa.products_id
Ich hoffe das passt jetzt !

Gruß und danke schonmal
Mit Zitat antworten
  #13 (permalink)  
Alt 26-06-2012, 16:04
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Also die ersten beiden Queries sind in meinen Augen (und auch nach Meinung meines SQL-Servers) fehlerfrei. Von dem dritten erwarten wir das wohl nicht.

Was passiert bei dir?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #14 (permalink)  
Alt 26-06-2012, 16:09
eleven-seven
 Registrierter Benutzer
Links : Onlinestatus : eleven-seven ist offline
Registriert seit: Jun 2012
Beiträge: 9
eleven-seven befindet sich auf einem aufstrebenden Ast
Standard

die ersten Zwei ohne Probleme beim dritten dann Fehler!

HTML-Code:
#1064 - You have an error in your SQL syntax; check the manual that  corresponds to your MySQL server version for the right syntax to use  near 'join (select p.products_id         from products p         join products_attri' at line 1
Mit Zitat antworten
  #15 (permalink)  
Alt 26-06-2012, 16:19
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Wie gesagt, das wundert doch nicht.

Ein Query, der mit JOIN anfängt ist ganz sicher kein qültiger Query.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
mysql fehler beim verbinden mit mysql admin t0m Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 9 01-11-2005 19:00
[MySQL 4.1] Wie verhindere ich Fehler in MySQL-Tabellen? thomas01 BRAINSTORMING PHP/SQL/HTML/JS/CSS 1 24-08-2005 14:30
MySQL Fehler w-lan SQL / Datenbanken 2 01-07-2005 21:58
MYSQL Fehler sHimp|1mp SQL / Datenbanken 2 26-09-2003 11:57
Mysql fehler ... NMG SQL / Datenbanken 1 02-03-2003 17:06

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:59 Uhr.