SQL Abfrage mit bearbeiteten Vergleichen

Transporter

Mitglied
Hallo,

meine SQL Abfrage geht über mehrere Tabellen.
Die Abfrage an sich wird schön mit


PHP:
// Achtung ... ein Beispiel

WHERE user_game.user_id = user.user_id AND ... AND ...

verbunden.

In einem Bereich der Abfrage möchte ich die Vergleiche allerdings bearbeiten.
PHP:
// Ungefähr so

WHERE user_game.user_id = user.user_id - $variable AND ... AND ...

Allerdings funktioniert das nicht!

Mach ich was an der Schreibweise falsch... oder geht das einfach nicht?!

Gruß und Danke für die Hilfe

Markus
 
Hi,

bekommst du eine Fehlermeldung?

Also grundsätzlich geht das schon. Es gibt aber natürlich ein paar Dinge, die schief gehen könnten:
- Wenn PHP $variable interpretieren soll, musst du den Query-String in Double Quotes ( " ) setzen.
- Der Wert von $variable muss natürlich, genau wie der Wert von user_id ein numerischer Wert sein, bei dem die Minus-Operation Sinn ergibt.

Sonst fällt mir spontan nichts ein. Zu wissen, was passiert, wäre wie gesagt hilfreich.

Viele Grüße
 
Hallo,

leider bekomme ich keine Fehlermeldung, der SELECT wird einfach nicht ausgeführt.
Hier jetzt einmal die ganze ungeschönte SQL Abfrage.

PHP:
 // SO FUNKTIONIERTS NICHT 
  $user_unit =
    mysql_fetch_object
   (mysql_query("SELECT user_unit.unit_id

                   FROM user_game,
                        episode_mission,
                        episode,
                        map_ground,
                        ground_setup,
                        action,
                        unit_action_scope,
                        scope,
                        user_unit

                  WHERE user_game.user_id = ".$_SESSION['user_id']."
                    AND episode_mission.mission_id = user_game.mission_id
                    AND episode_mission.episode_id = episode.episode_id
                    AND episode.map_id = map_ground.map_id
                    AND map_ground.field_id = $target_id
                    AND ground_setup.ground_id = map_ground.ground_id
                    AND action.action_id = $action_id
                    AND ground_setup.setup_id = action.setup_id
                    AND unit_action_scope.unit_id = user_unit.unit_id
                    AND action.action_id = unit_action_scope.action_id
                    AND unit_action_scope.scope_id = scope.scope_id
                    AND user_unit_id = ".$_SESSION['user_unit_id']."
                    AND scope.field_id = $user_unit-field_id - $target_id"));


// SO FUNKTIONIERTS, da ich die Variable $test_unit->field_id vorher gesondert abgerufen  habe
  $user_unit =
    mysql_fetch_object
   (mysql_query("SELECT user_unit.unit_id

                   FROM user_game,
                        episode_mission,
                        episode,
                        map_ground,
                        ground_setup,
                        action,
                        unit_action_scope,
                        scope,
                        user_unit

                  WHERE user_game.user_id = ".$_SESSION['user_id']."
                    AND episode_mission.mission_id = user_game.mission_id
                    AND episode_mission.episode_id = episode.episode_id
                    AND episode.map_id = map_ground.map_id
                    AND map_ground.field_id = $target_id
                    AND ground_setup.ground_id = map_ground.ground_id
                    AND action.action_id = $action_id
                    AND ground_setup.setup_id = action.setup_id
                    AND unit_action_scope.unit_id = user_unit.unit_id
                    AND action.action_id = unit_action_scope.action_id
                    AND unit_action_scope.scope_id = scope.scope_id
                    AND user_unit_id = ".$_SESSION['user_unit_id']."
                    AND scope.field_id = $test_unit->field_id - $target_id")); // HIER IST DIE ÄNDERUNG
 
Zurück