Mysql unterabfrage

macropode

Erfahrenes Mitglied
Hi leute bitte nicht lachen habe vollgendes Problem ich möchte per php eine mysql unterabfrage stellen.

vollgendermassen soll es ausschauen:

Code:
$sql = "Select * from tabelle1  WHERE leads >= '1' ORDER BY gesamtwertung DESC and (SELECT * FROM `tabelle2 ` WHERE `id` = '977deea0'AND `datum` LIKE '%-04-2010')";

nur leider funktioniert das so nicht.

nun die grosse Frage:

warum nicht? im handbuch wird es so ähnlich erklärt!

bitte helft mir
 
Welche Fehlermeldung kommt?

Mach bei '977deea0'AND ein Leerzeichen dazwischen rein.

Und bitte halte dich an die Netiquette; du bist lang genug angemeldet um sie zu kennen.
 
Tada... Wieder einmal ein Fall für meine Lieblings-Standard-Antwort
Da die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.
PHP MySQL Debug Queries
Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das ausgegebe SQL-Statement ins Forum.

Und wenn man dein SQL mal formatiert, dann sieht man beim Formatieren schon das irgendwei da etwas gar komisch ist.
SQL:
SELECT 
    * 
FROM 
    tabelle1  
WHERE 
    leads >= '1' 
ORDER BY 
    gesamtwertung DESC 
AND (    
    SELECT 
        *
    FROM 
        `tabelle2 ` 
    WHERE 
        `id` = '977deea0'
        AND `datum` LIKE '%-04-2010'
    )
item: ein ORDER BY vor einem AND ist sicher falsch
item: Die Unterabfrage macht so keinen Sinn. Mit was der Hauptabfrage soll den das Ding verknüpft werden?

warum nicht? im handbuch wird es so ähnlich erklärt!
Das Handbuch das dies so erklärt kannst du gleich als Klo-Papier benutzen
 
Zuletzt bearbeitet von einem Moderator:
Stimmt.

Erstmal vielen Dank für die Denkansätze.

Ich habe den code jetzt etwas verändert dennoch funktioniert er nicht.

$sql = "Select * from tabelle1 WHERE leads >= '1' and userid = (SELECT id FROM `ststistik_kunden_zuordnung` WHERE `datum` LIKE '%-04-2010') ORDER BY gesamtwertung DESC";


Die userid und die id sind Eindeutige Zuordnungen für beide Tabellen.

Es funktioniert aber einfach nicht.
 
item: Bitte, bitte formatiere dein SQL. Auch in PHP kann man formatiere SQL haben. Glaub mir, dann kann man sie sogar lesen und ggf. verstehen (siehe weiter unten)

item: Bitte PHP-Code in PHP-Tags setzen und nicht in Zitat-Tags. [PHP]<?php //dein Code ?>[/PHP]

item: "geht einfach nicht". Tja, dann ists halt so. Mit dieser Aussage können wir dir nicht helfen. Was geht nicht? Kommen keine Daten? Kommt ein Fehler? Kommen zu viele Daten? kommen die falschen Daten?

item: Wenn du uns mitteilen würdest, was das SQL machen sollte, könnten wir dir besser sagen obs das ev. auch tut.

item: Hast du mein Tutorial zur Fehlersuche mal angeschaut, das ich extra für dich verlinkt habe? Was ist das Resultat dieser Fehlersuche?

item: Bei Unterabfragen im WHERE-Teil empfiehlt sich ein IN anstelle des =

item: Der LIKE-Teil. Du willst da auf Monat und Jahr prüfen? Dann solltest du keinen String-Vergleich machen
SQL:
EXTRACT(YEAR_MONTH FROM datum) = 201004

Hier nun das ganze lesbar formatiert in PHP
PHP:
$sql <<<SQL
SELECT 
    * 
FROM
    tabelle1
WHERE
    leads >= '1' 
    AND userid IN (
                    SELECT 
                        ID 
                    FROM 
                        ststistik_kunden_zuordnung 
                    WHERE 
                        EXTRACT(YEAR_MONTH FROM datum) = 201004
                    ) 
ORDER BY 
    gesamtwertung DESC
SQL;
//hier der weitere PHP-Code
 
Zuletzt bearbeitet von einem Moderator:
PHP:
$sql = "Select * from tabelle1 WHERE leads >= '1' and userid = (SELECT id FROM `ststistik_kunden_zuordnung` WHERE `datum`LIKE '%-04-2010') ORDER BY gesamtwertung DESC";

Lass die Hochkommas (') bei datum mal weg...

Nur mal so ne Idee...
 
es ist kein normales Hochkomma, sondern ein `. Was du meinst ist ein '. Das `wird verwendet um die Tabellen und spaltennamen zu kennzeichnen die ev. beim Parsen ansonsten Probleme machen könnten.

SQL:
--Annahme: wir haben eine Tabelle mit dem Namen from.

--Funktioniert nicht:
SELECT * FROM from;

--Funktioniert:
SELECT * FROM `from`;
 
Zuletzt bearbeitet von einem Moderator:
sorry. als fehlermeldung kommt:


Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /var/www/web0/html/anzeige.php on line 18

Und zur Erklärung:
Ich möchte aus der tabelle1 Daten von Usern haben, welche sich in einem bestimmten Monat angemeldet haben.

Das anmeldedatum steht nur in der anderen tabelle.
 
Zurück