Ich werde kurz erklären, was ich bisher getan habe- Zunächst einmal habe ich mehrere Filialen und jeder Laden hat seine eigene Tabelle, in der es enthält ID, Artikel, Menge und Preis und es gibt eine Haupttabelle, die all_items
genannt wird, die die Gesamtmenge enthält, die von jeder Geschäftstabelle genommen wird.PHP Join mehrere Tabellen nicht wie erwartet funktioniert
Jetzt hat jeder Lagertisch entweder die gleiche Artikelnummer oder nicht. Hier können Sie sehen, was die Tabellen wie folgt aussieht:
Shop Tabellen genannt: S1, S2, S3
S1
id item qty price
1 x1 10 12
2 x2 10 15
3 x3 5 5
S2
id item qty price
1 x1 10 12
2 x4 6 6
S3
id item qty price
1 x3 1 5
2 x6 5 5
3 x7 5 12
all_items-Enthält ursprünglichen Gesamtmenge
id item qty price
1 x1 20 12
2 x2 10 15
3 x3 6 5
4 x4 6 6
5 x6 5 5
6 x7 5 12
Okay, jetzt habe ich beschlossen, die Menge, um herauszufinden, für jedes Element in allen Filialen zum Vergleichen purposes- Wie folgt:
item price S1 S2 S3
x1 12 10 10 -
x2 15 10 - -
x3 5 5 - 5
x4 6 - 6 -
x6 5 - - 5
x7 12 - - 5
Ich hoffe es ist jetzt klar für Sie. Ich habe ein Formular mit Checkbox Eingabetyp erstellt (für jeden Speicher) Benutzer auswählen zu lassen, die er speichern vergleichen will, so nach dem Absenden des Formulars - eine PHP-Seite enthält den folgenden Code:
$allstore = $_POST['store']; //Collects name from checkbox ticks under form
function createSelect($allstore)
{
if (empty($allstore))
return "";
$querySelect = "";
$queryJoin = "";
$baseTable = "";
foreach ($allstore as $store => $value) {
if (!$querySelect) {
$baseTable = "all_items";
$querySelect = "SELECT " . $store . ".item_no, " . $store . ".actual_price, " . $store . ".selling_price, " . $store . ".qty as " . $store;
} else {
$querySelect .= ", " . $store . ".qty as " . $store;
$queryJoin .= "
INNER JOIN " . $store . " ON " . $baseTable . ".item_no = " . $store . ".item_no";
}
}
$querySelect .= " FROM " . $baseTable;
$query = $querySelect . $queryJoin;
return $query;
}
$allstore = array(); // The below code allows function to know how many stores selected in $allstore
if (!empty($_POST['store'])) {
foreach ($_POST['store'] as $value) {
$allstore["s_".$value] = 0; // or 1, it doesn't matter because your function adds all the keys
}
}
var_dump(createSelect($allstore)); // Output SQL
$query = (createSelect($allstore));
$result = mysql_query($query);
//Rest of the code .....
Nun, wenn Sie Hinweis $baseTable = "all_items";
macht die gesamte Abfrage fehlgeschlagen. Wenn ich jedoch den Wert auf $baseTable = $store;
ändere, funktioniert es und zeigt eine Ausgabe an, aber nicht wie erwartet, denn es stellt sich heraus, dass S1 jetzt die Hauptsache ist und das Ergebnis wird völlig anders sein, da es nur auf den S1-Elementen weiterleitet.
Wenn Sie eine hilfreiche Lösung zur Verfügung stellen können, werden wir uns freuen.
Vielen Dank für Ihre Antwort, nach Ihrem Code, den ich einen Mysqli Fehler immer '-mysql_fetch_assoc() erwartet Parameter 1 Ressource, boolean given' –
Sein scheint hoffnungslos Suche nach einer Lösung für diese sein. –
Ich replizierte deinen Fall an meinem Ende und es scheint gut zu funktionieren. Überprüfen Sie, ob die Spaltennamen und Tabellennamen denen entsprechen, die Sie bereits haben. Wenn es nicht immer noch, lass es mich wissen – KBJ