Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- Abfrage mit subselect (https://www.gegen-bilderklau.net/thread.php?threadid=182897)


Geschrieben von Nanni am 01.01.2012 um 14:04:

  Abfrage mit subselect

Hey!

Also... das Problem ist, ich möchte mir automatisch die Kosten der Pferde bei uns ausrechnen lassen - der Preis variert je nach dem ob das Pferd in einer Box, im Offenstall,... steht. Bei meinen eigenen Pferden hab ich die Abfrage
php:
1:
$box mysql_query("SELECT ID FROM Allgemein WHERE Stall = 'Box' AND Besitzer = 'Nanni'");


Wie aber mache ich das für die Mitglieder? In der Pferdetabelle sind alle Pferde eingetragen, welche einmal am Kronenhof standen oder stehen, also auch welche die weder mir, noch Mitgliedern gehören. Google hat mir subselects ausgespuckt, weshalb ich jetzt so eine Abfrage habe:

php:
1:
2:
$einst mysql_query("SELECT ID FROM Allgemein WHERE Besitzer = '(SELECT Name FROM Mitglieder AND Name != 'Nanni')' AND Stall = 'Box'");
$einstanzahl mysql_num_rows($einst);


Als Fehlermeldung kommt:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/www/cwcity/hosting/k/r/kronenhof/htdocs/Mitglieder/ausrechnen.php on line 66

Vielleicht kann mir ja jemand sagen wie ich die Abfrage richtig schreibe, ich hab keine Ahnung wie ich es noch schreiben könnte :/

LG Nanni



Geschrieben von Oli am 01.01.2012 um 14:23:

  RE: Abfrage mit subselect

Hi,

Zitat:
Original von Nanni
php:
1:
2:
$einst mysql_query("SELECT ID FROM Allgemein WHERE Besitzer = '(SELECT Name FROM Mitglieder AND Name != 'Nanni')' AND Stall = 'Box'");
$einstanzahl mysql_num_rows($einst);

ohne die Anführungszeichen. Jetzt gerade versuchst du eine Zeile zu finden, bei der '(SELECT Name FROM Mitglieder AND Name != ' in Besitzer steht. Das müsste funktionieren, ist aber nicht das, was du möchtest.

Der Fehler tritt dagegen auf, weil du Anführungszeichen in Anführungszeichen hast und das SQL nicht ausgewertet werden kann.
WHERE Besitzer = '(SELECT Name FROM Mitglieder AND Name != 'Nanni')'

Zitat:
Original von Nanni
Als Fehlermeldung kommt:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/www/cwcity/hosting/k/r/kronenhof/htdocs/Mitglieder/ausrechnen.php on line 66

Du solltest dir die Fehlermeldungen von MySQL anzeigen - da steht dann nämlich auch in etwa drin, was falsch ist. Beispiel:
php:
1:
2:
3:
4:
5:
$result mysql_query ( ... );
if ( !$result ) echo mysql_error(); // Query fehlgeschlagen, MySQL-Fehler ausgeben
else {
  // was auch immer du tun wolltest, wenn der Query erfolgreich war
}


Zitat:
Original von Nanni
Vielleicht kann mir ja jemand sagen wie ich die Abfrage richtig schreibe, ich hab keine Ahnung wie ich es noch schreiben könnte :/

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
SELECT
  ID
FROM
  Allgemein
WHERE
  Besitzer = (
    SELECT
      Name
    FROM
      Mitglieder
     AND
      Name != 'Nanni'
   )
 AND
  Stall = 'Box'

Erklärung steht oben. Du kannst das natürlich auch wieder in eine Zeile zusammenfassen, aber so liest es sich besser Augenzwinkern .

LG



Geschrieben von Nanni am 01.01.2012 um 14:31:

 

Ah, das erklärt dass die ' blöd waren großes Grinsen

Ohne hab ich es allerdings auch schon probiert und es tut sich genauso wenig :/



Geschrieben von Oli am 01.01.2012 um 14:41:

 

Zitat:
Original von Nanni
Ah, das erklärt dass die ' blöd waren großes Grinsen

Ohne hab ich es allerdings auch schon probiert und es tut sich genauso wenig :/

Besitzer = (Subquery mit einem Ergebnis)
Besitzer IN (Subquery mit mehreren Ergebnissen)



Geschrieben von Nanni am 01.01.2012 um 15:18:

 

Ah, habs geschafft großes Grinsen
Danke Oli (:


Forensoftware: Burning Board, entwickelt von WoltLab GmbH